【VBA】VBAで書いたマクロを『Ctrl』を使ったショートカットキーで動かす2つの方法:頻繁に使うマクロで活用すると超便利!

シェアする

gazou8
このマクロを起動すると、『Ctrl』+『??』で指定したマクロを起動できるようになる。そんなコードを書いてみます。
今回は前に作成したマクロ”反復動作”を『Ctrl』+『E』で動かせるようにしたいと思います。

【VBA】基本的な反復処理を行うためのコードセット。だいたいこれをもとに少し修正すれば何とかなる!

1.コードその1:MacroOptionsメソッドによる方法

コードは知ってしまえばいたってシンプルです。

[vb]
Sub ShortCut1()

Application.MacroOptions Macro:="反復動作", ShortcutKey:="e"

End Sub
[/vb]

(”Sub”のコードを除けば)この1行でかけてしまいます。
これでこのマクロを1回起動させると以降では、マクロ”反復動作”をショートカット『Ctrl』+『E』で起動させることができます。

ちなみにShortcutKey:=のあとの『”e”』ですが、これは小文字でなくてはいけません
大文字で書く、つまり、

[vb]
Sub ShortCut2()

Application.MacroOptions Macro:="反復動作", ShortcutKey:="E"

End Sub
[/vb]

と書くと、『Ctrl』+『Shift』+『E』という意味になります。『Shift』を使うと大文字入力ができることと一緒ですね。
このMacroOptionsメソッドによる方法だと、

  • 『Ctrl』+『??』か『Ctrl』+『Shift』+『??』に限られる
  • 上記のコードで『”e”』となっているところを『””』として動かすとショートカットキー登録の解除ができる

という特徴があります。

2.コードその2:OnKeyメソッドによる方法

こちらもコードはシンプル。

[vb]
Sub ShortCut3()

Application.OnKey "^e", "反復動作"

End Sub
[/vb]

『”^e”』の^は『Ctrl』キーを表します。こちらの方ですと、

  • Excelを閉じずにこのファイル(ワークブック)のみを閉じても、ショートカット効果は継続する(閉じた後、動作させると再びファイルが開く)。
  • 『Alt』等を組み合わせたショートカットも作成可能

等の特徴があります。

3.どのキーに登録するか①:『Ctrl』+『??』でまだ使われていないケース

ショートカットキーを新しくつくるとなった時に気になるのが、どのキーに登録するかということ。
既に登録されているキーと重複して不具合でも発生したらいやですからね。

既に『Ctrl』+『??』という形のショートカットキーには結構な割合で使われています。例えば『Ctrl』+『S』で上書き保存、『Ctrl』+『C』で選択した部分のコピー、『Ctrl』+『P』で印刷、などです。
しかし、まだ登録されていないキーもあります。とりあげると、『8』、『E』、『Q』、『J』、『L』、『M』、『T』、『W』です。
『shift』とかを使わず、『Ctrl』と同時押しのキーの主要なところであれば網羅されているかと。これらのどれかに登録すると無難かと思います。

4.どのキーに登録するか②:『Ctrl』+??が他のショートカットキーと重複しているケース

既に登録されているキーに再度登録するとどうなるかというと、上書きを行う形になって、昔登録されていたものは使用できなくなります。そのため、例えば他のショートカットキーで代用できる等の場合にはこれらのキーを使用するのも手かもしれません。

『Ctrl』+『2』(⇒太字:『Ctrl』+『B』と重複)や『Ctrl』+『3』(⇒文字を斜体・イタリックにする:『Ctrl』+『I』と重複)は多くの方は利用していないと思いますので、新たなマクロ用に使っていいかもしれません。

5.あとがき

マクロを動かす方法といえば、図形等に登録して起動させるか、ダイアログを起動させて使う等が一般的ですが、上で見てきたようにショートカット登録も可能です。
もし頻繁に使うようなマクロだったら、一旦ショートカットキー登録用のマクロを動かしてみると効率化が見込めるかもしれません。