Excelのマクロ機能の中に、作ったマクロをショートカットキーに設定する方法があります。
マクロの画面を開き、オプションから「マクロオプション」を開くと、その中にショートカットキーを設定する項目があります。
ただし、これはCtrlと何かのキーを掛け合わしたショートカットキーしか設定出来ず、たとえばCtrl+Shift+Zとか単純にF3だけ、矢印の↓、というような設定が出来ません。
Application.OnKey
Application.OnKeyを使います。
Private Sub Workbook_Open()
Application.OnKey "+^{Z}", "test"
End Sub
これはCtrl+Shift+Zを押したときに”test”というプロシージャを実行します。
ショートカットキーの設定を使いたい場合はWorkbookのOpen時に設定するのが通常じゃないでしょうかね?もしくはアドイン化させてどのBookでも使えるようにするか。
Application.OnKey(Key, Procedure)
OnKeyメソッドは1つ目の引数でキーの設定、2つ目の引数でプロシージャを指定します。Keyは必須ですがProcedureは任意で、以下のようにするとキーをExcel内で無効化出来ます。
Application.OnKey "{96}", ""
プロシージャを何も指定しないので何も動かない、という事です。
{96}はテンキーの「0」なのですが、これを設定していると0を押しても0と入力も出来なくなります。
※ただしセル編集時には動きます。
また、この設定を戻す場合には引数を何も指定しなければ良いです。
Application.OnKey "{96}"
引数を与えなければ普通に戻ります。テンキーの0が入力出来るようになります。
キーとコード一覧
キー | コード |
---|---|
a~z | {a}~{z} |
1~0 | {1}~{0} |
F1~F15 | {F1}~{F15} |
BackSpace | {BACKSPACE}または{BS} |
Enter | ~ (チルダ) |
↑ ↓ ← → | {UP} {DOWN} {LEFT} {RIGHT} |
ScrollLock | {SCROLLLOCK} |
InsertまたはIns | {INSERT} |
Home | {HOME} |
End | {END} |
Delete | {DELETE}または{DEL} |
PageUp PageDown | {PGUP} {PGDN} |
Esc | {ESC} |
Tab | {TAB} |
テンキー 0 | {96} |
テンキー 1 | {97} |
・・・ | ・・・ |
テンキー 9 | {105} |
テンキー * | {106} |
テンキー + | {107} |
テンキー – | {108} |
テンキー . | {109} |
テンキー / | {110} |
テンキー Enter | {ENTER} |
また、Shift、Ctrl、Altは上記の組み合わせることが出来ます。組み合わせる場合のコードが以下です。
キー | コード |
---|---|
Shift | + |
Ctrl | ^ |
Alt | % |
使用方法は上記のサンプルにもあるようにShift+Ctrl+Zでしたら+^{Z}とします。
サンプル
Ctrl + + に登録
Application.OnKey "^{+}", "プロシージャー名"
Shift + Ctrl + → に登録
Application.OnKey "+^{RIGHT}", "プロシージャー名"
Shift + Ctrl + → を通常の機能に戻す。
Application.OnKey "+^{RIGHT}"
→ を無効にします。
Application.OnKey "{RIGHT}", ""
/(スラッシュ)をショートカットキーにする際の注意点
テンキーの/(スラッシュ)をショートカットキーにしようとする場合注意が必要です。なぜならそのままでは動かないから。
原因は「/」はメニューキーとして設定されているからなんですが、
むかしむかし、今の表計算ソフトのもととなったと言われている「Lotus 1-2-3」というソフトがありました。
Lotus1-2-3では「/」の入力はメニューを表示するためのコマンドでした。
当時はLotus1-2-3がトップシェアであったため、後発のMS Excelがこの機能を引き継ぎ、それが今も続いている状態です。そのため「/」単体を押すとメニューキー扱いになって、ショートカットキーとしては使えない状態です。
しかしその機能を外せば使えます。
Excelのオプション画面から「詳細設定」タブに「Lotusとの互換性」に「Microsoft Excel メニューキー」というのがあるのでそれを変更すれば良いです。
しかし、いつまでLotusとの互換性設定が必要なのかな・・。計算方式がLotusになっている(チェックが入っている)状態があって、なんかおかしい!という問い合わせがたま~~にあります。