マクロを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になっている(チェックが入っている)状態があって、なんかおかしい!という問い合わせがたま~~にあります。

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

  • ▼お小遣い稼ぎしませんか?▼ 日々の生活にhappyをプラスする|ハピタス

    クレジットカード・FX口座を作るだけで簡単に3万円GETです。一切支出はありません。

COUNTIF 日付 ユーザー定義関数 条件付き書式 DATE SUM 検索 印刷 XLSTART 変換 STDEV 置換 作業効率UP TODAY グラフ 偏差値 無料 バーコード COLUMN フロー図 テンプレート セル選択 HLOOKUP 図形 ワイルドカード NA() コピペ 目標 SUMIF VLOOKUP
  • 関西在住の30代サラリーマン。事務職で毎日Excelと戯れています。
    システム導入なんて資金が無い!Excelでなんとかやりたい零細中小の社長さん・事務員さんの力になればと思います。
    詳しいプロフィール


PAGE TOP ↑