エクセル術

マクロをCtrl+じゃないショートカットキーで起動する

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 メニューキー」というのがあるのでそれを変更すれば良いです。

 

Excelのオプション、詳細設定にLotusとの互換性がある

しかし、いつまでLotusとの互換性設定が必要なのかな・・。計算方式がLotusになっている(チェックが入っている)状態があって、なんかおかしい!という問い合わせがたま~~にあります。

モバイルバージョンを終了