1. 導入:なぜショートカットキーを設定するのか
実務において、頻繁に利用するマクロを[マクロ]ダイアログから毎回呼び出すのは非常に非効率です。ショートカットキーを設定すれば、キーボード操作だけで瞬時に処理を実行でき、作業の生産性が飛躍的に向上します。本記事では、後からマクロにショートカットキーを割り当てるための2つの主要な手法を解説します。
2. 基礎知識:MacroOptionsとOnKeyの違い
VBAでショートカットを設定する方法は主に2つあります。
MacroOptionsメソッド: [マクロオプション]画面をプログラムから操作する手法です。設定は「ブック」に紐づくため、そのブックを開いている間だけ有効になります。特定の業務ツールで「このブックを開いている時だけ使いたい」というケースに最適です。
OnKeyメソッド: Excelのキーボード入力そのものを監視・制御する手法です。こちらは「Excel全体」に設定が適用されます。特定のブックを開いていなくても実行可能ですが、設定の管理(解除忘れなど)に注意が必要です。
3. 実装・解決策
実務で安全に運用するには、MacroOptionsメソッドを推奨します。理由は、ブックを閉じれば設定が解除されるため、他の業務に影響を与えにくいからです。一方、特定のキー(Fキーなど)を強制的に割り当てたい場合はOnKeyを使います。
4. サンプルプログラム
以下のコードを標準モジュールに貼り付けて実行してください。
【MacroOptionsによる設定例】
Sub SetShortcut_MacroOptions()
‘ Sample1というマクロに「Ctrl + j」を割り当てる
‘ ※大文字の”J”を指定すると「Ctrl + Shift + j」になります
Application.MacroOptions Macro:=”Sample1″, ShortcutKey:=”j”
MsgBox “Ctrl + j で Sample1 が実行されるようになりました。”
End Sub
Sub ClearShortcut_MacroOptions()
‘ 設定を解除するには空文字を指定
Application.MacroOptions Macro:=”Sample1″, ShortcutKey:=””
MsgBox “ショートカット設定を解除しました。”
End Sub
【OnKeyによる設定例】
Sub SetShortcut_OnKey()
‘ F3キーを押した時にSample1を実行する設定
Application.OnKey “{F3}”, “Sample1”
MsgBox “F3キーで Sample1 が実行されるようになりました。”
End Sub
Sub ClearShortcut_OnKey()
‘ 設定を解除するには第2引数を省略
Application.OnKey “{F3}”
MsgBox “F3キーの設定を解除しました。”
End Sub
Sub Sample1()
MsgBox “マクロが実行されました!”
End Sub
5. 応用・注意点:現場で陥りやすい罠
・設定の競合に注意:
MacroOptionsで「s」を割り当てると、本来の「Ctrl+S(上書き保存)」がマクロで上書きされ、上書き保存ができなくなります。日常的に使用する標準ショートカットキーは避けるのが無難です。
・OnKeyの解除忘れ:
OnKeyはExcelを終了するまで設定が残り続けます。ブックを閉じたときに設定を解除するよう、ThisWorkbookモジュールの「Workbook_BeforeClose」イベントに解除処理を記述する癖をつけましょう。
・エラー回避:
存在しないプロシージャ名を指定するとエラーになります。マクロ名は正確に記述しましょう。また、MacroOptionsは設定したブックが開かれていないと機能しないため、チームで共有する場合は「起動時に設定を適用する」ような設計にしておくと親切です。
