日本語入力ソフトとVBAの覚え書き

・各種日本語入力ソフトの辞書解説 ・ちょっと楽になるExcel VBA集

(Excel VBA) Shift, Ctrl, A~Z以外の組み合わせでマクロのショートカットキーを作成する

f:id:dz_dzone:20170814233145j:plain

はじめに

以前の記事で「マクロに割り当てることの出来るショートカットキーの一覧」を紹介しましたが、そちらの方法では「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」キーを押しても何の反応もなくなります。

おわりに

このように、多くのキーの組合せでショートカットキーが作れますので、いろいろ試してみてはいかがでしょうか。