Contents
この記事でできること
「あのマクロ、また Alt+F8 で探して実行するのか……」――VBAでマクロを作ったはいいものの、実行のたびにマクロダイアログを開いて選ぶのが面倒に感じたことはないだろうか。
この記事では、VBAマクロにショートカットキーを割り当てて、Ctrl+文字の一発で実行する方法を紹介する。
- 対象:VBAマクロの実行を効率化したい人
- 所要時間:コピペ → 実行まで約5分(目安)
- 成果物:よく使うマクロ3つにショートカットキーを一括割り当て+解除するマクロ
マクロをボタンで実行する方法は マクロをボタン1つで実行する方法 で紹介している。ショートカットキーとボタン、どちらが自分に合うかはこの記事を読んでから判断するとよい。
完成イメージ(Before / After)
Before(毎回マクロダイアログで実行)
マクロを実行するたびに
→ Alt + F8 でマクロダイアログを開く
→ 一覧からマクロ名を探す
→ 「実行」をクリック
→ 毎回3〜4ステップかかる
After(ショートカットキーで一発実行)
Ctrl + Shift + R を押す
→ マクロが即座に実行される
→ ダイアログを開く必要なし
→ 1ステップで完了
実務版の動作イメージ
割り当てマクロを実行
→ Ctrl+Shift+R:売上集計マクロ
→ Ctrl+Shift+E:データ出力マクロ
→ Ctrl+Shift+B:バックアップマクロ
→ 「3つのショートカットを割り当てました」とメッセージ表示
解除マクロを実行
→ 3つのショートカットをすべて解除
→ 「ショートカットを解除しました」とメッセージ表示
手順(コピペ → 実行まで約5分)
実行前の注意: Application.OnKeyでショートカットキーを割り当てると、Excelの既存のショートカット(Ctrl+Cなど)を上書きしてしまう可能性があります。この記事ではCtrl+Shift+文字の安全な組み合わせを使用しますが、Ctrl+文字を使う場合は競合に十分注意してください。解除方法も必ず確認してください。
ステップ1:Excelファイルをマクロ有効ブックで保存する
- Excelを開く(新規でも既存でもOK)
- 「ファイル」→「名前を付けて保存」
- ファイルの種類を 「Excel マクロ有効ブック (*.xlsm)」 に変更して保存
.xlsx のままだとマクロが保存されない。必ず .xlsm にすること。
ステップ2:VBE(コードを書く画面)を開く
Alt + F11 キーを押すとVBE(Visual Basic Editor)が開く。
一般的にはAlt + F11で開けるが、企業のセキュリティ設定でVBAが無効化されている場合は、IT部門に確認すること。
ステップ3:標準モジュールを挿入する
- VBEのメニュー「挿入」→「標準モジュール」をクリック
- 右側に白い画面(コードウィンドウ)が表示される
ステップ4:コードを貼り付けて実行する
- 下の「コード(最小版)」をコピーして、コードウィンドウに貼り付ける
- Alt + F8 を押す(または VBE上で F5)
- 割り当てマクロを実行する
- 割り当てたショートカットキーを押してマクロが動くことを確認する
コード(最小版)– マクロダイアログから手動でショートカットキーを割り当て
まずはコードを書かずに、Excelの標準機能だけでショートカットキーを割り当てる方法を紹介する。
方法1:マクロダイアログから設定する(コード不要)
- Alt + F8 を押してマクロダイアログを開く
- ショートカットキーを割り当てたいマクロ名をクリックして選択
- 「オプション」 ボタンをクリック
- 「ショートカット キー」の欄に割り当てたい文字を入力する
- 小文字を入力 → Ctrl + 文字 になる(例:r → Ctrl+R)
- Shiftを押しながら大文字を入力 → Ctrl + Shift + 文字 になる(例:R → Ctrl+Shift+R)
- 「OK」→「閉じる」
これだけでショートカットキーが使えるようになる。ただしこの方法は、通常のブック(.xlsm)ではブックを閉じて開き直すと設定が消える場合がある。
方法2:Application.OnKeyで割り当てる(最小コード)
コードで割り当てるなら、以下の1行が基本形。まずは「Hello」を表示するだけのサンプルマクロに、Ctrl+Shift+Rを割り当ててみよう。
Sub SampleHello()
' ショートカットキーで呼び出される側のマクロ
MsgBox "Hello! ショートカットキーで実行されました。", vbInformation
End Sub
Sub AssignShortcutKey()
' Ctrl+Shift+R に SampleHello マクロを割り当てる
' "^" = Ctrl、"+" = Shift、"R" = Rキー
Application.OnKey "^+R", "SampleHello"
MsgBox "Ctrl + Shift + R に SampleHello を割り当てました。", vbInformation
End Sub
割り当ての解除と既定に戻す:
Sub RemoveShortcutKey()
' Ctrl+Shift+R の割り当てを解除する
' 第2引数に空文字 "" を指定 → そのキーを押しても何も起きなくなる
Application.OnKey "^+R", ""
MsgBox "Ctrl + Shift + R の割り当てを解除しました。", vbInformation
End Sub
Sub ResetShortcutKey()
' Ctrl+Shift+R を既定の動作に戻す
' 第2引数を省略 → Excelの標準ショートカットに戻る
Application.OnKey "^+R"
MsgBox "Ctrl + Shift + R を既定の動作に戻しました。", vbInformation
End Sub
「解除」と「既定に戻す」の違い:
| 操作 | コード | 効果 |
|---|---|---|
| 割り当て | Application.OnKey "^+R", "マクロ名" |
Ctrl+Shift+Rでマクロが実行される |
| 解除(無効化) | Application.OnKey "^+R", "" |
Ctrl+Shift+Rを押しても何も起きない |
| 既定に戻す | Application.OnKey "^+R" |
Ctrl+Shift+RがExcelの標準動作に戻る |
この違いは重要。"" を指定するとキーが完全に無効化されるのに対し、第2引数を省略するとExcel本来のショートカット動作に戻る。迷ったら「既定に戻す」(第2引数省略)を使うのが安全。
ポイント:
Application.OnKey "キーコード", "マクロ名"が基本書式- キーコード:
^= Ctrl、+= Shift、%= Alt - 割り当てはExcelセッション中のみ有効。Excelを閉じるとリセットされる
コード(実務版)– よく使うマクロ3つにショートカットを一括割り当て+解除
実務では、よく使うマクロを複数まとめてショートカットキーに割り当て、不要になったら一括解除するのが便利。以下は3つのマクロにショートカットを割り当て・解除する実務版。
ショートカットで呼び出すマクロ(3つ)
Sub Macro_SalesReport()
' ★ 売上集計マクロ(Ctrl+Shift+Rで呼び出す)
' 実際の処理をここに書く。以下はサンプル。
MsgBox "売上集計マクロを実行しました。", vbInformation
End Sub
Sub Macro_ExportData()
' ★ データ出力マクロ(Ctrl+Shift+Eで呼び出す)
' 実際の処理をここに書く。以下はサンプル。
MsgBox "データ出力マクロを実行しました。", vbInformation
End Sub
Sub Macro_Backup()
' ★ バックアップマクロ(Ctrl+Shift+Bで呼び出す)
' 実際の処理をここに書く。以下はサンプル。
MsgBox "バックアップマクロを実行しました。", vbInformation
End Sub
一括割り当てマクロ
Sub AssignAllShortcuts()
On Error GoTo ErrHandler
' ※ OnKeyは存在しないマクロ名を指定してもエラーにならない。
' 割り当て先のマクロ名にスペルミスがないか確認すること。
' --- 3つのマクロにショートカットキーを一括割り当て ---
' Ctrl+Shift+R → 売上集計マクロ
Application.OnKey "^+R", "Macro_SalesReport"
' Ctrl+Shift+E → データ出力マクロ
Application.OnKey "^+E", "Macro_ExportData"
' Ctrl+Shift+B → バックアップマクロ
Application.OnKey "^+B", "Macro_Backup"
' 割り当て結果をメッセージで表示
MsgBox "ショートカットキーを割り当てました。" & vbCrLf & vbCrLf & _
"Ctrl + Shift + R : 売上集計" & vbCrLf & _
"Ctrl + Shift + E : データ出力" & vbCrLf & _
"Ctrl + Shift + B : バックアップ", vbInformation
Exit Sub
ErrHandler:
MsgBox "ショートカットキーの割り当て中にエラーが発生しました。" & vbCrLf & _
"エラー内容:" & Err.Description, vbExclamation
End Sub
一括解除マクロ
Sub RemoveAllShortcuts()
On Error GoTo ErrHandler
' --- 3つのショートカットキーを一括解除 ---
' 第2引数に "" を指定 → そのキーを押しても何も起きなくなる
Application.OnKey "^+R", ""
Application.OnKey "^+E", ""
Application.OnKey "^+B", ""
MsgBox "ショートカットキーを解除しました。" & vbCrLf & _
"Ctrl + Shift + R / E / B は無効になりました。", vbInformation
Exit Sub
ErrHandler:
MsgBox "ショートカットキーの解除中にエラーが発生しました。" & vbCrLf & _
"エラー内容:" & Err.Description, vbExclamation
End Sub
応用:ブックを開いたら自動でショートカットを割り当てる
毎回手動で割り当てマクロを実行するのが面倒な場合は、ブックを開いた瞬間に自動で割り当てることもできる。以下のコードはThisWorkbookモジュールに貼り付ける(標準モジュールではないので注意)。
' ★ このコードは ThisWorkbook モジュールに貼り付ける
Private Sub Workbook_Open()
' ブックを開いたときに自動でショートカットを割り当て
Application.OnKey "^+R", "Macro_SalesReport"
Application.OnKey "^+E", "Macro_ExportData"
Application.OnKey "^+B", "Macro_Backup"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' ブックを閉じるときにショートカットを解除(他のブックに影響しない)
Application.OnKey "^+R", ""
Application.OnKey "^+E", ""
Application.OnKey "^+B", ""
End Sub
ThisWorkbookモジュールへの貼り付け方:
- VBEの左側「プロジェクトエクスプローラー」を確認する(表示されていない場合は Ctrl+R で表示)
- 自分のブック名の下にある 「ThisWorkbook」 をダブルクリック
- 右側に開いたコードウィンドウに、上記のコードを貼り付ける
※ 標準モジュール(Module1など)ではなく、必ず ThisWorkbook に貼り付けること。
ポイント:
Workbook_Openはブックを開いた瞬間に自動実行されるイベントWorkbook_BeforeCloseでブックを閉じるときに解除すれば、他のブックに影響しない- セキュリティ設定でマクロが自動実行されない場合は、「マクロを有効にする」を選択すること
エラー処理(On Error)の書き方について詳しくは エラー処理で止まらないマクロを作る方法 を参照。
ショートカットキーで呼び出すマクロの先頭にMsgBoxの確認を入れたい場合は、MsgBoxで確認ダイアログを出して処理を分岐する方法 を参照。
Ctrl+文字 vs Ctrl+Shift+文字 の使い分け
| 比較項目 | Ctrl+文字 | Ctrl+Shift+文字 |
|---|---|---|
| OnKeyの書式 | "^文字" (例: "^r") |
"^+文字" (例: "^+R") |
| 操作 | 2キー同時押し | 3キー同時押し |
| 既存ショートカットとの競合 | 多い(Ctrl+Cなど頻用キーが多数) | 少ない(比較的空いている) |
| リスク | 標準機能を上書きする恐れあり | 安全に使いやすい |
| 推奨度 | 空きが確認できた場合のみ | 推奨 |
上書きしてはいけないExcel標準ショートカット(代表例):
| キー | 標準の動作 |
|---|---|
| Ctrl+C | コピー |
| Ctrl+V | 貼り付け |
| Ctrl+X | 切り取り |
| Ctrl+Z | 元に戻す |
| Ctrl+S | 保存 |
| Ctrl+A | 全選択 |
| Ctrl+F | 検索 |
| Ctrl+H | 置換 |
| Ctrl+P | 印刷 |
| Ctrl+N | 新規ブック |
迷ったらこの基準:
- 「安全に使いたい」→ Ctrl+Shift+文字 を使う(この記事のサンプルもすべてCtrl+Shift+文字)
- 「どうしても2キーがいい」→ Ctrl+J、Ctrl+M、Ctrl+Qなど、標準で割り当てのない文字を選ぶ
よくある落とし穴5選
| # | 症状 | 原因 | 対策 |
|---|---|---|---|
| 1 | Ctrl+Cが効かなくなった(コピーできない) | Application.OnKeyでCtrl+Cにマクロを割り当ててしまった | Ctrl+Shift+文字を使い、Ctrl+C/V/X/S/Zなど標準キーは絶対に上書きしない。上書きしてしまった場合は Application.OnKey "^c" で既定に戻る |
| 2 | ショートカットキーを押してもマクロが実行されない | OnKeyで指定したマクロ名にスペルミスがある、またはマクロが別のブックにある | マクロ名を正確に指定する。別ブックの場合は "ブック名!マクロ名" の形式にする |
| 3 | Excelを再起動したらショートカットが消えた | Application.OnKeyの割り当てはExcelセッション中のみ有効 | Workbook_Openイベントで起動時に自動割り当てするか、個人用マクロブック(PERSONAL.xlsb)に保存する |
| 4 | 解除したのにキーが効かない(標準動作にも戻らない) | Application.OnKey "^+R", "" は「何も起きない」設定。既定の動作に戻すには第2引数を省略する |
既定に戻す場合:Application.OnKey "^+R"(第2引数なし)。「何もしない」と「既定に戻す」は別物 |
| 5 | 手動割り当て(マクロダイアログ)とOnKeyが競合する | 両方で同じキーに違うマクロを割り当てている | どちらか一方に統一する。コードで管理できるOnKeyを推奨 |
FAQ
Q1: ショートカットの割り当ては他のブックでも有効?
Application.OnKeyの割り当てはExcel全体に適用される。そのため、ブックAで割り当てたショートカットはブックBでも有効。特定のブックだけで使いたい場合は、Workbook_DeactivateイベントやWorkbook_BeforeCloseイベントで解除するコードを入れる。
Q2: ファンクションキー(F1〜F12)にもマクロを割り当てられる?
可能。Application.OnKey "{F9}", "マクロ名" のように中括弧 {} で囲む。ただしF1(ヘルプ)やF5(ジャンプ)など標準機能と競合するため注意。{F9} あたりは比較的空いていることが多い。
Q3: 個人用マクロブック(PERSONAL.xlsb)に保存するメリットは?
PERSONAL.xlsbはExcel起動時に常にバックグラウンドで開かれるため、どのブックでもショートカットが使える。「毎日使う汎用マクロ」はPERSONAL.xlsbに入れておくと便利。PERSONAL.xlsbがない場合は、マクロの記録を実行し保存先に「個人用マクロブック」を選ぶと自動で作成される。
Q4: マクロをボタンで実行するのとショートカットキーで実行するのはどちらがよい?
用途による。キーボード操作が多い作業ではショートカットが速い。マウス操作中心の作業や、誰でも使えるようにしたいシートではボタンが直感的。両方を併用するのが最も便利。詳しくは マクロをボタン1つで実行する方法 を参照。
Q5: 指定時刻にマクロを自動実行する方法もある?
ある。Application.OnTimeメソッドを使えば、指定した時刻にマクロを自動実行できる。ショートカットキー(手動)とOnTime(自動)を組み合わせれば、マクロの実行を柔軟に制御できる。詳しくは 指定時刻にマクロを自動実行する方法 を参照。
まとめ
この記事で、VBAマクロにショートカットキーを割り当てて素早く実行する方法を学んだ。
- 最小版:マクロダイアログの「オプション」から手動で割り当て。または
Application.OnKey "^+R", "マクロ名"の1行で割り当て - 実務版:Application.OnKeyで複数マクロに一括割り当て+一括解除。Workbook_Openで自動化も可能
ショートカットキーは、マクロをボタン1つで実行する方法 のボタン実行と並んで、マクロの実行効率を大きく上げる方法。指定時刻にマクロを自動実行する方法 の定時実行と組み合わせれば、「手動はショートカット、自動はタイマー」で業務の自動化がさらに進む。
次にやりたくなること:
- マクロをボタンで実行したい → マクロをボタン1つで実行する方法
- 指定時刻にマクロを自動実行したい → 指定時刻にマクロを自動実行する方法
- エラーで止まらないマクロを作りたい → エラー処理で止まらないマクロを作る方法
もっとカスタマイズしたい場合
「業務フローに合わせたショートカット設計をしたい」「ブック起動時に自動割り当てするマクロを作りたい」「部署で共有するショートカット一覧表を作りたい」など、業務に合わせたカスタマイズが必要な場合は、ココナラで相談できます。
相談時に以下の情報があるとスムーズです:
- Excel のバージョン / OS
- ショートカットを割り当てたいマクロの数と内容(概要)
- 特定のブックだけで使いたいか、全ブックで使いたいか
- 既に使っているショートカットキーの一覧(あれば)


コメント