キーを押して日付値を調整する(Microsoft Excel)
Robertは、Quickenの日付フィールドで、プラスキーまたはマイナスキーを押すと、日付が1日ずつ増加または減少すると述べています。彼はこれと同じ種類の効果をExcelで作成したいと考えています。
これは、特にExcelで、想定するよりもアプローチが難しい問題です。特定のキー(この場合はプラスキーまたはマイナスキー)を押すとアクションを実行する必要があるため、当然、OnKeyメソッドを使用できると想定されます。次の例を検討してください。
Sub Start_OnKey() Application.OnKey "{+}", "Plus1" Application.OnKey "-", "Minus1" End Sub
Sub End_OnKey() Application.OnKey "{+}" Application.OnKey "-" End Sub
Sub Plus1() If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then ActiveCell.Value = ActiveCell.Value + 1 End If End Sub
Sub Minus1() If IsDate(ActiveCell) And Not ActiveCell.HasFormula Then ActiveCell.Value = ActiveCell.Value - 1 End If End Sub
すべてのVBAドキュメントによると、Start_OnKeyマクロを実行すると、上記は問題なく機能するはずです。プラスキーまたはマイナスキーが押されるたびに、適切な手順が実行され、日付がインクリメントまたはデクリメントされます。問題は、Excelの一部のバージョンでは機能しないことです。どうして?プラスキーを押すと、Excelの一部のバージョンが、OnKeyが依存する通常のキーボードバッファをバイパスする特別な「数式入力」モードになるようです。したがって、日付を含むセルが選択されているときにマイナスキーを押すと、目的の結果が得られますが、プラスキーを押しても効果はありません。
プラスキーが問題となるバージョンのExcelの場合、唯一の解決策はキーストロークを別のものに変更することです。たとえば、キーの押下を変更して、Ctrl + uを使用して日付をインクリメントし、Ctrl + dを使用して日付をデクリメントすることができます。
Sub Start_OnKey() Application.OnKey "^u", "Plus1" Application.OnKey "^d", "Minus1" End Sub
Sub End_OnKey() Application.OnKey "^u" Application.OnKey "^d" End Sub
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]
。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(7197)は、Microsoft Excel 97、2000、2002、および2003に適用されます。