【VBA小技】F3キーに独自機能を割り当てるには?Excelでファンクションキーをカスタマイズ

✅ はじめに

「F3キーを押したら特定の処理を走らせたい」
「定型処理をワンタッチで実行したい」

ExcelやAccessなどVBA環境では、F1~F12などのファンクションキーをカスタマイズして、ショートカットキーとして利用することができます。
この記事では、F3キーなどに独自機能を割り当てる方法と実用例をわかりやすく紹介します。

■ 方法①:Excel VBAで Application.OnKey を使う

〇 基本構文

Application.OnKey "{F3}", "実行したいマクロ名"

例:F3キーを押したら MyMacro が実行されるようにする

Sub SetF3Shortcut() 
  Application.OnKey "{F3}", "MyMacro"
  End Sub

Sub MyMacro() 
  MsgBox "F3キーが押されました!"
End Sub

〇 注意点

  • マクロを割り当てた状態はExcelを閉じるまで有効
  • Excelを起動したときに自動で設定したい場合は、ThisWorkbook の Workbook_Open() に書きましょう
Private Sub Workbook_Open()
  Application.OnKey "{F3}", "MyMacro"
End Sub

〇 元に戻したいときは?

Application.OnKey "{F3}"

→ 引数を1つだけにすれば、F3のカスタム機能が解除され、元の動作に戻ります。

■ 応用例:ファンクションキーでよく使う機能をショートカット化

キー 割り当てたい動作 使用例
F3 選択セルの値をログに書き出す Call ExportToLog
F4 印刷プレビューを開く Application.OnKey “{F4}”, “ShowPrintPreview”
F5 特定のセルにジャンプ Range(“A1”).Select
F6 選択範囲を値貼り付け Selection.Value = Selection.Value

■ 補足:Access VBAでは使えない?

Access VBAでは Application.OnKey は使用できません。
その代わりに、フォームの KeyDown イベントでファンクションキーを検出して処理を実行することが可能です。

例:AccessのフォームでF3キーを検出する

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
  If KeyCode = vbKeyF3 Then
    MsgBox "F3キーが押されました(Access)" 
  End If 
End Sub

※注意点:フォームの KeyPreview プロパティを True にする必要があります。

■ まとめ

Application.OnKeyを使えば、頻繁に使う処理をワンタッチで呼び出せるようになります。
よく使う機能にコードを使用していれば作業の効率化が図れるため、時間があった時に追加してみるのもいいかもしれません。

■ ポイントまとめ

  • Excelでは Application.OnKey を使ってF1~F12にマクロを割り当て可能
  • 起動時に自動設定したい場合は Workbook_Open() を使う
  • Accessでは Form_KeyDownKeyPreview=True をセットで使う
  • 戻し忘れに注意! 終了処理などで OnKey を解除するのも忘れずに

■ 関連記事

【VBA】「コンパイルエラー 修正候補: =」の原因と対処法|Callを使うべきタイミングとは?
【VBA × WinSCP × Amazon S3】VBAからS3にファイルを自動アップロードする方法
【VBA × WinSCP × Amazon S3】VBAからS3にファイルを自動アップロードする方法

■ 関連キーワード

  • VBA F3キー 割り当て
  • Excel OnKey マクロ
  • VBA ファンクションキー カスタム
  • Access Fキー イベント処理
  • VBA ショートカットキー 自作
  • F3押下 マクロ起動