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に適用されます。