
VBAでマクロを作成しているんだけど、
たしかマクロにはショートカットキーを割り当てできた記憶が…。
どうやったらできるの?

なるほど…。
VBAでマクロを作っている人はほぼ見ることのない「ある画面」で設定できるんです。
では今回は、「マクロにショートカットキーを割り当てする方法」を
VBAマクロ歴3年の私が、できるだけわかりやすく解説いたします。
マクロにショートカットキーを割り当てする方法
今回は3通りの方法を紹介・解説いたします。
- 既存のマクロにショートカットキーを割り当て
- マクロの記録時にショートカットキーを割り当て
- VBAコードで割り当て(中・上級者向け)
1つ1つ見ていきましょう。
既存のマクロにショートカットキーを割り当て
VBAで作成したマクロにショートカットキーを割り当てたい時にオススメの方法です。
前提:マクロ完成後
マクロ作成前なら、まずはマクロを完成させましょう。
では、手順を紹介いたします。
1.エクセルメニューの「開発」→「マクロ」をクリックします。

2.「マクロ」という画面が開きますので、対象のマクロを選択し、「オプション」をクリックします。

3.「マクロ オプション」画面が開きます。
ショートカットキーを設定できるところがありますので、好きなキーを入力してください。

今回は「w」にしましたが、「ショートカットキーを割り当てる際の注意点」を参考にキーを選んでください。
OKをクリックすれば、設定は完了です。
実際にショートカットキーを押してマクロが実行されるか試してみてください。

一度設定した後でも、同じ手順でショートカットキーを変更することもできます。
マクロの記録時にショートカットキーを割り当て
マクロを記録して作成する場合は、もっと簡単にショートカットキーの割り当てができます。
前提:マクロ作成前
このあとマクロを記録するため、記録内容を復習しておいてください。
では手順を見ていきましょう。
1.エクセルメニューの「開発」→「マクロの記録」をクリックします。

2.「マクロの記録」画面が表示されます。

3.「マクロ名」などを入力していくのですが、「ショートカットキー」というのがあり、ここで設定できます。
今回は「w」にしましたが、「ショートカットキーを割り当てる際の注意点」を参考にキーを選んでください。
OKをクリックしたら、マクロの記録が始まります。
4.マクロが記録できたら、「記録終了」をクリックして完了です。
実際にショートカットキーでマクロが実行されるか試してみてください。
設定したショートカットキーを変更したい場合は、前項を参考に設定を変更してください。
VBAコードで割り当て(中・上級者向け)
複数のマクロを1つ1つ設定するのがめんどうな場合にオススメの方法です。
少し難しい内容になるため、初心者の方にはオススメしません。
前提:マクロ完成後
マクロ作成前なら、まずはマクロを完成させましょう。
では手順の紹介です。
1.エクセルメニューの「開発」→「Visual Basic」をクリックします(または「Alt + F11」)

2.「VBA Project」画面が開いたら、左のメニューにある「This Workbook」をダブルクリックします。

3.「This Workbook」のモジュールが開きますので、下記コードを入力してください。

Private Sub Workbook_Open()
Application.OnKey "ショートカットキー", "マクロ名"
End Sub
4.「ショートカットキー」と「マクロ名」はご自分のマクロに合わせて変更してください。
下記コードは、「Utatane」というマクロに「Ctrl + w」を割り当てた例です。
Private Sub Workbook_Open()
Application.OnKey "^w", "Utatane" ' マクロ「Utatane」に「Ctrl + w」を割り当て
End Sub
「alt + w」というショートカットキーも割り当て可能です(「%w」)
Application.OnKey "%w", "Utatane" ' マクロ「Utatane」に「Alt + w」を割り当て
5.マクロを実行するか、ブックを保存して一度閉じ、再度開くとショートカットキーが有効になります。
「This Workbook」ではなく、いつもマクロを書いている標準モジュールにこれらのコードを書くことでもショートカットキーの割り当ては可能です。
しかしながら、ブックを閉じた時点で設定したショートカットキーはリセットされてしまいます。
(次にブックを開いたときには、ショートカットキーが未設定となり、再設定が必要)
「This Workbook」に今回紹介したコードを記述することで、ブックを開くと同時にショートカットキーが自動で設定され、再設定する手間を省くことができます。
ショートカットキーを割り当てる際の注意点
ショートカットキーは基本的にどのキーでも割り当てることができますが、注意が必要です。
なぜなら、「Ctrl + c」(コピー)や「Ctrl + z」(戻る)など、既にショートカットキーとして登録されているものがあるからです。
マクロのショートカットキーをこれらと同じにしてしまうと、マクロが優先されてしまう場合が多く、元々の機能が使えなくなってしまいます。
絶対に使わないと決めているキーならいいのですが、よく使う「Ctrl + c」などはやめておきましょう。
「Ctrl + q」や「Ctrl + w」などが無難です。
ショートカットキーが機能しない原因と対処法
考えられる主な原因は以下の3つです。
ショートカットキーの機能が重複している
たとえば「Ctrl + c」をマクロのショートカットキーにした場合、元々の機能(コピー)と重複しているため、「コピー」が優先されてしまう場合があります。
ショートカットキーにこだわりが無ければ、別のキー(「Ctrl + w」など)に変更してみてください。
マクロが無効になっている
エクセルではセキュリティ上の理由から、基本的にマクロを無効化する傾向にあります。
マクロが無効になっていると、ショートカットキーを押してもマクロは実行されません。
下記記事を参考にマクロを有効化してみてください。
ショートカットキーが削除されている(VBAで設定した場合)
標準モジュールにショートカットキーを設定する記述をした場合、ブックを閉じると設定はリセットされます。
「VBAコードで割り当て(中・上級者向け)」を参考に「This Workbook」に記述することで、ブックを開いた際にショートカットキーが自動で再設定されます。
最後に
マクロにショートカットキーを割り当てする方法を解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!