【VBA】ショートカットキー設定時の注意
こんにちは。
今回は、Excelの自作関数にショートカットキーを設定する際、
適当にやって躓いてしまった事を書いていきます。
ショートカットキー設定方法は2つある
- その①:「開発」のタブから設定
上記の方法で、組み込みなしでショートカットキーを設定できます。
注意点は、
・キーを登録できるのは、引数・戻り値がないPublicな関数のみ
・モジュールファイルのファイル名(オブジェクト名)と、
そのファイルの中の関数名を同じにすると「図中.③」の
関数名の部分がめちゃくちゃ長くなる
- その②:Workbookイベントを捕まえてマクロで設定
ブックを開いた時のイベント内で、
ショートカットキーを設定するマクロを組み込みます。
注意点は、ブックを閉じるときに
設定したショートカットキーを初期化させないと、
全てのExcelを閉じないとショートカットキーが残るということです。
' ブック起動時イベント Private Sub Workbook_Open() ' ショートカットキー設定 Application.OnKey "指定のキー", "指定の関数名" End Sub ' ブック閉じる時イベント Private Sub Workbook_BeforeClose(Cancel As Boolean) ' ショートカットキー解放 Application.OnKey "指定のキー" End Sub
※「指定のキー」部分に入力する定数は下記リンク参照
https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.onkey
※「指定の関数名」部分は
”オブジェクト名.関数名”の書き方で記入
キー設定時の注意!
ここからが今日躓いたことなのですが、
その①の方法でキーを設定した場合、
エクスポートした後もショートカットキー情報が残る!!
ということです。。。
つまり、
モジュールファイルをエクスポートして別のブックにインポートした時
エクスポート前に「その①」の方法でキー設定を行っていると、
インポートしたブックの方にも自動的にキー設定されています。
なので、ショートカットキーを設定した覚えがないのに
勝手に関数が呼び出されてしまいます・・・
私は今回、マクロ形式ブックでその①方法でキー設定して、
アドイン形式のブックにインポートしてその②方法でキー設定した為
意図しないショートカットキーが潜んでいて気づくのに時間がかかりました・・・
その①の方法でキー設定を管理するのは簡単ですが、
エクスポートすることを考えるならその②で設定する方が
キー設定の管理ができるので断然おススメです!