和風スパゲティのレシピ

日本語でコーディングするExcelVBA

マクロにショートカットキーを設定する

自作したマクロにショートカットキーを設定する方法を解説します。

マクロにショートカットキーを設定する手順

① マクロを作成したら、「開発」タブの「マクロ」からマクロ一覧を開く。
※ Alt + F8 でもマクロ一覧を開くことができます。

開発タブ


② ショートカットキーを設定したいマクロを選んだ状態で「オプション」を開く。

マクロの一覧


③ ショートカットキーを入力し「OK」で完了。

マクロオプション



この手順でマクロにショートカットキーを設定できます。


ショートカットキーに設定できるのはアルファベット限定で、
数字やF10などのファンクションキーは設定できません。


ただしCtrl+Shift+○をショートカットに設定することは可能で、
入力欄にShiftを押しながら入力することで設定できます。

Ctrl+Shift+○のショートカット設定



なお、このマクロオプションで設定したショートカットキーは、
Windowsの規定ショートカットキーより優先されます。


つまり、Ctrl+Cなどに設定してしまうとコピーができなくなるので、
既定のショートカットが設定されていないキーに登録しましょう。


そういう意味でもメジャーなショートカットが設定されていない、
Ctrl+Shift+○に自作マクロを割り当てるのはおすすめです。

マクロに設定したショートカットキーを解除する

マクロに設定したショートカットキーを解除する場合は、
同じ「マクロ オプション」ウィンドウを開いてキー欄をクリアします。

この方法でしか設定は解除できないため、
「Ctrl+jに設定したマクロを解除」
のように、キーを指定して解除することができません。


マクロを一つ一つ開いて設定されているかを調べて解除するか、
実際に実行して対象のマクロを特定して解除してください。

ショートカットキーの設定をマクロで行う

今回行ったマクロのショートカットキー設定はマクロで行うことも可能です。

例えば今回行った「テストマクロ」にCtrl+Jを割り当てるには、
以下のコードを実行します。

Application.MacroOptions Macro:="テストマクロ", ShortcutKey:="j"

 
また、Ctrl+Shift+○のショートカットキーについては、
大文字を渡すことで設定できます。

Application.MacroOptions Macro:="テストマクロ", ShortcutKey:="J"

 
マクロ名だけで一意に定まるのであればActiveWorkbookにする必要はなく、
上記コードで設定することが可能です。

複数のブックに同名のマクロが存在する場合は、
以下のように「ブック名!」を接頭してください。

Application.MacroOptions Macro:="Book1.xlsm!テストマクロ", ShortcutKey:="j"

 

なお、このコードは「表示中のブック」に対してしか実行できません。

基本非表示のアドインや個人用マクロブックはそのままではエラーになりますが、
これらのブックこそショートカットマクロを搭載しがちなので注意しましょう。


このコードで設定した場合と、手入力で設定した場合で、
結果として設定される仕様に違いはありません。

それでもわざわざマクロで実行するメリットとしては、
以下のように全ショートカットキーを一括設定するマクロを作成できることです。

Sub マクロのショートカットキーを一括設定する()

    ' Windows(ThisWorkbook.Name).Visible = True
        ' ↑PERSONAL.XLSBなど非表示のブックのマクロを設定したい場合は一旦表示してから実行

    Application.MacroOptions Macro:="テストマクロ1", ShortcutKey:="A"
    Application.MacroOptions Macro:="テストマクロ2", ShortcutKey:="B"
    Application.MacroOptions Macro:="テストマクロ3", ShortcutKey:="C"
    Application.MacroOptions Macro:="テストマクロ4", ShortcutKey:="D"

    ' Windows(ThisWorkbook.Name).Visible = False

End Sub

 
このマクロを作っておくと、

  • どのマクロをどのキーに設定しているかのリストを兼ねてくれる
  • なにかの拍子に全ショートカットキーが外れた時、再設定が楽

というメリットを享受できます。

ショートカットキーをたくさん設定するような状況が発生したら、
この方法での設定も検討してください。


ちなみに「なにかの拍子に全ショートカットキーが外れる」パターンとしては、
ソースコードのカット&ペーストが挙げられます。


コードをカットすると一旦マクロが消えた扱いになるため、
ペーストしてもショートカットキーが復元されません。


モジュールの整理などを行った際に良く発生しますので、
この仕様には注意してください。


ちなみにこの仕様を逆手にとって、
「全コードを切り取り ⇒ その場に貼り付け」
という手順でショートカットキーの一括解除が可能
です。

どのマクロにどのキーを割り当てたかわからなくなったら、
この方法でリセットできますので知っておいてください。