【VBA】マクロにショートカットキーを割り当てて素早く実行する方法(コピペOK)

VBA
スポンサーリンク
スポンサーリンク

この記事でできること

「あのマクロ、また 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ファイルをマクロ有効ブックで保存する

  1. Excelを開く(新規でも既存でもOK)
  2. 「ファイル」→「名前を付けて保存」
  3. ファイルの種類を 「Excel マクロ有効ブック (*.xlsm)」 に変更して保存

.xlsx のままだとマクロが保存されない。必ず .xlsm にすること。

ステップ2:VBE(コードを書く画面)を開く

Alt + F11 キーを押すとVBE(Visual Basic Editor)が開く。

一般的にはAlt + F11で開けるが、企業のセキュリティ設定でVBAが無効化されている場合は、IT部門に確認すること。

ステップ3:標準モジュールを挿入する

  1. VBEのメニュー「挿入」→「標準モジュール」をクリック
  2. 右側に白い画面(コードウィンドウ)が表示される

ステップ4:コードを貼り付けて実行する

  1. 下の「コード(最小版)」をコピーして、コードウィンドウに貼り付ける
  2. Alt + F8 を押す(または VBE上で F5
  3. 割り当てマクロを実行する
  4. 割り当てたショートカットキーを押してマクロが動くことを確認する

コード(最小版)– マクロダイアログから手動でショートカットキーを割り当て

まずはコードを書かずに、Excelの標準機能だけでショートカットキーを割り当てる方法を紹介する。

方法1:マクロダイアログから設定する(コード不要)

  1. Alt + F8 を押してマクロダイアログを開く
  2. ショートカットキーを割り当てたいマクロ名をクリックして選択
  3. 「オプション」 ボタンをクリック
  4. 「ショートカット キー」の欄に割り当てたい文字を入力する
    • 小文字を入力 → 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モジュールへの貼り付け方:

  1. VBEの左側「プロジェクトエクスプローラー」を確認する(表示されていない場合は Ctrl+R で表示)
  2. 自分のブック名の下にある 「ThisWorkbook」 をダブルクリック
  3. 右側に開いたコードウィンドウに、上記のコードを貼り付ける

※ 標準モジュール(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つで実行する方法 のボタン実行と並んで、マクロの実行効率を大きく上げる方法。指定時刻にマクロを自動実行する方法 の定時実行と組み合わせれば、「手動はショートカット、自動はタイマー」で業務の自動化がさらに進む。

次にやりたくなること:


もっとカスタマイズしたい場合

「業務フローに合わせたショートカット設計をしたい」「ブック起動時に自動割り当てするマクロを作りたい」「部署で共有するショートカット一覧表を作りたい」など、業務に合わせたカスタマイズが必要な場合は、ココナラで相談できます。

相談時に以下の情報があるとスムーズです:

  • Excel のバージョン / OS
  • ショートカットを割り当てたいマクロの数と内容(概要)
  • 特定のブックだけで使いたいか、全ブックで使いたいか
  • 既に使っているショートカットキーの一覧(あれば)

コメント

タイトルとURLをコピーしました