Excelアドインのマクロに、ショートカットキーを割り当てる
Excelアドイン中のマクロをキーボードショートカットで実行したいことがあったので、その方法をまとめておきます。
要点は以下の2点でした。
- マクロは標準モジュール内に書く
- キーの割付けと解除の処理は ThisWorkbook 内に書く
標準モジュール
VisualBasic のメニューから 挿入►標準モジュール として、Module1 を以下のように作成します(モジュール名は何でもOK)。' 選択したセルの色塗り
' 「赤塗り」のセルは「塗りなし」に、「塗りなし」のセルは「赤塗り」になる
' 複数選択したときは、左上のセルの色が基準になる(と思う)
Private Sub NuriRed()
If Selection Is Nothing Then Exit Sub
with Selection.Intorior
If .ColorIndex = 3 Then
.ColorIndex = 0 ' 塗りなし
Else
.ColorIndex = 3 ' 赤
End If
End With
End SubThisWorkbook
VisualBasic の画面左側、プロジェクトウインドウ中の Microsoft Excel Objects にある ThisWorkbook を以下のようにしておきます。' 割り当て
Private Sub Workbook_Open()
Application.OnKey "^a", "NuriRed" ' [Ctrl]+[a]
' Application.OnKey "+a", "NuriRed" ' [Shift]+[a]
' Application.OnKey "+^a", "NuriRed" ' [Shift]+[Ctrl]+[a]
End Sub
' 割り当て解除
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^a" ' [Ctrl]+[a]
' Application.OnKey "+a" ' [Shift]+[a]
' Application.OnKey "+^a" ' [Shift]+[Ctrl]+[a]
End Sub
これは、ワークブックを開くと(アドインを有効にすると) [Ctrl]+[a] に上記マクロ NuriRed() を割り当てる処理です。
[Ctrl]+[a] は標準では全選択の機能ですが、この割り当てによって色塗り機能に変更されてしまいます。
割り当て解除の処理も書いとかないと、アドインを無効にしても [Ctrl]+[a] が全選択機能に戻らないので要注意です。
あとは xla 形式で保存して完了です。このアドインを登録&有効化すれば [Ctrl]+[a] の機能が切り替わります。
実用上は、別のキーに割り当てたほうが便利でしょう。