Excel起動時にVBAマクロへショートカットを自動設定する


VBAマクロへショートカットを割り当てる方法について書きます。

タイトル以外にも、いくつかの方法について、ご紹介します。



[目次]

1.マクロの記録時にショートカットを割り当てる

2.Excelのマクロメニューからショートカットを割り当てる

3.VBAのOnKeyメソッドでショートカットを割り当てる

4.Excel起動時にマクロへ自動でショートカットを割り当てる(OnKey)



1.マクロの記録時にショートカットを割り当てる



「マクロの記録」から、マクロを作成する場合は、そのままショートカットを設定できます。

一番簡単な方法だと思います。


[方法]

以下から様にマクロの記録メニューから、ショートカットを登録できます。

Excel「開発」タブ>「マクロの記録」メニュー>ショートカットキー




(「マクロの記録」メニュー)




「開発」タブの表示方法(参考)
[開発] タブを表示する - Excel


  >1.[ファイル] タブをクリックします。

  >2.[オプション] をクリックします。

  >3.[リボンのユーザー設定] をクリックします。

  >4.[リボンのユーザー設定] および [メイン タブ] で、[ 開発] チェック ボックスをオンにします。




2.Excelのマクロメニューからショートカットを割り当てる



2つ目は、Excelのマクロメニューからショートカットを割り当てる方法です。


[方法]

以下から作成済みマクロへショートカットを登録できます。

Excel「開発」タブ>「マクロ」メニュー>オプション(または、Alt+F8)






(「マクロ」メニュー)



3.VBAのOnKeyメソッドでショートカットを割り当てる



3つ目は、VBAのOnKeyメソッドで、ショートカットを割り当てる方法です。




[サンプルソース]

Application.OnKey "^j", "test1"


サンプルでは、Ctrl+jキーに、「test1」というプロシージャのショートカットを割り当てています。

その他のキーの指定方法については、以下サイトを参考にしてください。

Application.OnKey メソッド (Excel)

注意として、コードを実行するまでは、ショートカットは登録されません。

何らかのタイミングでコードを実行する必要があります。


Excel起動時に、上記のコードを実行する方法は、次項で説明します。



4.Excel起動時にマクロへ自動でショートカットを割り当てる(OnKey)



VBAのOnKeyメソッドをExcel起動時に呼び出し、マクロへショートカットを登録する方法です。



Excel起動時にマクロを自動実行する方法については、前回説明しました。

ブックを開いた時やExcel起動時にマクロを自動実行する - Sumihirablog.


以下の通り、OnKeyメソッドを記述すれば、実現できます。




[コードの記述箇所]

  (1) PERSONAL.XLSB>Microsoft Excel Objects>ThisWorkBook

  (2) PERSONAL.XLSB>標準モジュール>任意のモジュール





(図:コードの記述箇所)



[サンプルソース(1)]※ThisWorkBookに記述

'PERSONAL.XLSB ThisWorkBook


'WithEventsにてApplicationオブジェクト(Excel全体を示すオブジェクト)に発生するイベントを拾える様にする
'PERSONAL.XLSBに記述することで、全てのExcelファイルに適用される。
Public WithEvents xlAPP As Application


'Excelブックが開いた時に自動実行する。
Private Sub Workbook_Open()

    
    'アプリケーションオブジェクトを取得
    Set xlAPP = Application
    
    '標準モジュールの呼出し
    '直接呼び出すとエラーになるため、実行時間をずらして呼び出す。
    Application.OnTime Now + TimeSerial(0, 0, 1), "appFirst"
    

End Sub


[サンプルソース(2)]※標準モジュールに記述

'PERSONAL.XLSB 標準モジュール firstModule
'Excel起動時に自動実行するマクロを記述する。


'マクロの実行メニューにPublicプロシージャが表示されないようにする。
Option Private Module


'Excel起動時に自動実行するプロシージャ
Public Sub appFirst()

    'ファイル読込みに時間がかかるとエラーになるためスキップする
    On Error GoTo nextProc
    
    '自動実行処理(ショートカットの登録)を以下に記述する
    Application.OnKey "^j", "test1"
    Application.OnKey "^k", "test2"
    
nextProc:
        
End Sub



上記の方法で、Excel起動時にショートカットを登録させることができます。


コードの説明については、前回の記事をご参照ください。

以上です。