はじめに
よく使うVBAマクロを、毎回「マクロ」ダイアログから実行するのは少し手間ですよね。もし、Ctrl + Shift + C のようなショートカットキー一発でマクロを呼び出せたら、作業効率が格段にアップします。
VBAの Application.OnKey メソッドを使えば、好きなマクロを、好きなショートカットキーに簡単かつ柔軟に割り当てることができます。
この記事では、Application.OnKey の基本的な使い方から、ブックを開いたときに自動でショートカットキーを有効にする方法、さらには個人用マクロブックのマクロを呼び出す方法まで、具体例を交えて分かりやすく解説します。
Application.OnKey の基本的な使い方
Application.OnKey は、特定のキー操作(ショートカットキー)が行われたときに、指定したマクロ(プロシージャ)を実行するように設定する命令です。
書式: Application.OnKey "キー", "実行するマクロ名"
まずは、とても簡単な例を見てみましょう。現在の日時をメッセージボックスに表示するマクロ ShowCurrentTime を、Ctrl + Shift + T に割り当ててみます。
サンプルコード
' 割り当てたいマクロ
Sub ShowCurrentTime()
MsgBox "現在の日時は " & Now() & " です。", vbInformation
End Sub
' ショートカットキーを登録するマクロ
Sub RegisterShortcut()
' Ctrl + Shift + T に ShowCurrentTime マクロを割り当て
Application.OnKey "+^t", "ShowCurrentTime"
MsgBox "Ctrl + Shift + T にマクロを登録しました。", vbInformation
End Sub
【使い方】
- 上記の
ShowCurrentTimeとRegisterShortcutの両方のコードを標準モジュールに貼り付けます。 RegisterShortcutを一度実行します。- これで、
Ctrl + Shift + Tを押すたびに、ShowCurrentTimeマクロが実行されるようになります。
ショートカットキーの指定方法
キーの指定には、特定の記号を使います。
| キー | VBAでの記号 |
| Shift | + (プラス) |
| Ctrl | ^ (キャレット) |
| Alt | % (パーセント) |
例:
^t→Ctrl + T%t→Alt + T+^t→Ctrl + Shift + T
ブックを開いたときに自動で登録する
RegisterShortcut を毎回手動で実行するのは面倒です。そこで、Workbook_Open イベントを使えば、そのExcelブックを開いたときに自動的にショートカットキーが有効になります。
【設定方法】
- VBEのプロジェクトエクスプローラーから
ThisWorkbookをダブルクリックします。 - 上部のドロップダウンで
(General)からWorkbookを選びます。 - 右側のドロップダウンで
Openを選びます。 - 表示された
Private Sub Workbook_Open()の中に、Application.OnKeyの行を記述します。 ThisWorkbookに記述するコード
Private Sub Workbook_Open()
' このブックが開かれたときに、自動でショートカットキーを登録
Application.OnKey "+^t", "ShowCurrentTime"
End Sub
これで、このブックを開いている間は Ctrl + Shift + T でいつでも ShowCurrentTime マクロを呼び出せるようになります。
ショートカットキーの登録を解除(リセット)する
一度登録したショートカットキーを解除し、Excel本来の機能に戻したい場合は、第2引数(マクロ名)を空文字列 "" にして OnKey メソッドを実行します。
Sub UnregisterShortcut()
' Ctrl + Shift + T の割り当てを解除
Application.OnKey "+^t", ""
MsgBox "Ctrl + Shift + T の登録を解除しました。", vbInformation
End Sub
ブックを閉じるときに自動で解除したい場合は、Workbook_BeforeClose イベントにこの処理を記述すると良いでしょう。
個人用マクロブックのマクロを呼び出す
どのブックを開いていても使えるように、個人用マクロブック(PERSONAL.XLSB)にマクロを保存している場合も多いと思います。
そのマクロをショートカットキーに割り当てる場合は、マクロ名の前に PERSONAL.XLSB! を付ける必要があります。
例: 個人用マクロブックに ShowCurrentTime が保存されている場合
Sub RegisterPersonalMacroShortcut()
Application.OnKey "+^t", "PERSONAL.XLSB!ShowCurrentTime"
End Sub
このようにブック名を明記することで、Excelはどのブックにあるマクロを呼び出せばよいかを正確に判断できます。
まとめ
今回は Application.OnKey を使って、VBAマクロをショートカットキーに登録する方法を解説しました。
Application.OnKey "キー", "マクロ名"で簡単に登録できる。Workbook_Openイベントを使えば、ブックを開いたときに自動で有効化できる。- 登録を解除するには、マクロ名を
""にして実行する。 - 個人用マクロブックのマクロは
"PERSONAL.XLSB!マクロ名"のように指定する。
よく使う定型作業をマクロ化し、さらに OnKey メソッドでショートカットキーを割り当てれば、日々の業務が驚くほど快適になります。ぜひマスターして、あなただけの最強のExcel環境を構築してみてください。
