(Excel VBA) Shift, Ctrl, A~Z以外の組み合わせでマクロのショートカットキーを作成する
- はじめに
- Application.OnKeyメソッドでマクロのショートカットキーを作成する
- Application.OnKey メソッドで使えるキーおよび記述方法の一覧
- Application.OnKeyメソッドの応用:キーを無効化する
- おわりに
はじめに
以前の記事で「マクロに割り当てることの出来るショートカットキーの一覧」を紹介しましたが、そちらの方法では「Ctrl」「Shift」「A~Z」キーの組合せでしかショートカットキーを作られませんでした。(どうでもいいけど、※同じテーマの記事を間違って2回書いてしまったw)
dz11.hatenadiary.jp
しかし、別の方法を使うことで、「Ctrl」「Shift」「Alt」の修飾キーと「キーボード上のほとんどのキー」の組合せでショートカットキーを作ることが可能になります。
Application.OnKeyメソッドでマクロのショートカットキーを作成する
VBAには Application.OnKey というメソッドがあり、これを使うことで Application.MacroOptionsでは成し得なかった様々なキーボードショートカットを作成することが可能です。
docs.microsoft.com
OnKey メソッドの構文
Application.OnKey Key [, Procedure] Key 必須 String型 ショートカットキーにしたいキーの組合せ文字列 Procedure オプション Variant型 実行したいマクロのプロシージャ名 第2引数を省略した場合、指定した組合せ文字列の標準の動作に戻る
サンプル
' ** Shift+Ctrl+← に を割り当てする Application.OnKey "+^{LEFT}", "TracePrecedents" ' ** Shift+Ctrl+← の動作をデフォルトに戻す Application.OnKey "+^{LEFT}"
Application.OnKeyメソッドはどこに記述するか
ショートカットキーはExcelの起動時に設定されることが好ましいです。したがって、個人用マクロブック(PERSONAL.XLSB)の「Auto_Open()」または「Workbook_Open()」に記述するのが良いでしょう。どちらも起動時に自動で実行される特殊なプロシージャです。
記述するプロシージャ | プロシージャの場所 |
---|---|
Auto_Open() | 個人用マクロブックの標準モジュール |
Workbook_Open() | Microsoft Excel Objects内のThisWorkbook |
Application.OnKey メソッドで使えるキーおよび記述方法の一覧
OnKeyメソッドで指定できるキーを文字で指定します。指定できるキーは一つで、それとは別に三つの修飾キーを組み合わせて付与することが可能です。
修飾キー
修飾キーおよび記述方法は以下の通りで、また自由に組み合わせることが出来ます。
修飾キー | 記述方法 | 備考 |
---|---|---|
Shift | + | 正符号 |
Ctrl | ^ | カレット,べき乗記号 |
Alt | % | パーセント記号 |
Escとファンクションキー
キー | 文字列またはキーコード | 備考 |
---|---|---|
Esc | { ESCAPE} または {ESC} | エスケープ |
F1 ~ F15 | {F1} ~ {F15} | ファンクションキー |
QWERTY部分
キー | 文字列またはキーコード | 備考 |
---|---|---|
Tab | {TAB} | タブ |
CapsLock | {CAPSLOCK} | キャプスロック |
1 ~ 0 | 1 ~ 0 | QWERTY側数字キー |
- | - | ハイフン |
a ~ z | a ~ z | アルファベット |
@ | @ | アットマーク |
[ | [ | 大かっこ |
; | ; | セミコロン |
: | : | コロン |
] | ] | 大かっこ閉じ |
, | , | コンマ |
. | . | ピリオド |
/ | / | スラッシュ |
\ | \ | バックスラッシュ |
BackSpace | {BACKSPACE} または {BS} | バックスペース |
Enter | ~ | QWERTYのEnter = チルダ |
PrintScreenの付近
キー | 文字列またはキーコード | 備考 |
---|---|---|
ScrollLock | {SCROLLLOCK} | スクロールロック |
Break | {BREAK} | ブレーク |
Insertの付近
キー | 文字列またはキーコード | 備考 |
---|---|---|
Ins | {INSERT} | インサート |
Delete または Del | {DELETE} または {DEL} | デリート |
Home | {HOME} | ホーム |
End | {END} | エンド |
PageUp | {PGUP} | ページアップ |
PageDown | {PGDN} | ページダウン |
カーソルキー
キー | 文字列またはキーコード | 備考 |
---|---|---|
↑ | {UP} | 上 |
↓ | {DOWN} | 下 |
← | {LEFT} | 左 |
→ | {RIGHT} | 右 |
テンキー
NumLock | {NUMLOCK} | Numロック |
0 | {96} | テンキーの0 |
1 | {97} | テンキーの1 |
2 | {98} | テンキーの2 |
3 | {99} | テンキーの3 |
4 | {100} | テンキーの4 |
5 | {101} | テンキーの5 |
6 | {102} | テンキーの6 |
7 | {103} | テンキーの7 |
8 | {104} | テンキーの8 |
9 | {105} | テンキーの9 |
Enter | {ENTER} | テンキーのEnter |
Application.OnKeyメソッドの応用:キーを無効化する
Application.OnKeyメソッドを応用して、キーを無効化することが出来ます。
例えば、ファンクションキーの「F1」はヘルプを表示させますが、近年はオンラインヘルプになり、表示も遅いし、セルの編集をしようと「F2」を押そうとして間違って押してしまうことが多いキーですよね。そこで「F1」キーを無効化してみたいと思います。
' ** F1キーを無効にする Application.OnKey "{F1}", ""
これで「F1」キーは無効になります。「F1」キーを押しても何の反応もなくなります。
おわりに
このように、多くのキーの組合せでショートカットキーが作れますので、いろいろ試してみてはいかがでしょうか。