【Excel VBA入門 第8回】ダブルクリックでマクロが動く!?「イベントプロシージャ」の基本を学ぼう

スポンサーリンク
Excel VBA

本ブログでは、ExcelVBAの基礎文法(変数、If文、Loop、プロシージャなど)を学んできた。これまでのマクロは「ボタンを押したり、VBA画面から実行ボタンを押して動かす」というものだった。

今回からスタートする新章では、「ユーザーが特定の操作をしたときに自動で動くマクロ」を扱っていく!

  • 「セルをダブルクリックしたらマクロを動かしたい」
  • 「セルの値を変更した瞬間に自動で計算させたい」

このような「特定の操作(イベント)」をきっかけに動く仕組みを「イベントプロシージャ」と呼ぶ。

今回はその第一歩として、「セルをダブルクリックしたときに動くマクロ」の基本を分かりやすく解説しよう!

イベントプロシージャ」ってなに?

通常のプロシージャ(Sub テスト() のようなもの)は、我々が「実行!」と命令したときに動く。

一方、イベントプロシージャは、Excel内で特定の出来事(イベント)が起きたことを検知して自動的に呼び出される特殊なプロシージャである。

よく使われるイベントの例

  • セルをダブルクリックしたとき(BeforeDoubleClick
  • セルを右クリックしたとき(BeforeRightClick
  • セルの値が書き換わったとき(Change
  • シートが開かれたとき(Activate

ここが重要!「シートモジュール」に書こう

これまでの第1〜7回では、VBAエディタの「挿入」メニューから「標準モジュール」を作成してコードを書いていた。

しかし、シートの操作に反応するイベントプロシージャは「シートモジュール」という場所に書く必要がある。

設定手順

  1. キーボードの Alt + F11 を押してVBAエディタを開く
  2. 左側のプロジェクトウィンドウから、動かしたいシート(例: Sheet1)をダブルクリックする
  3. 開いた白い画面(これがシートモジュール)にコードを書く
💡 ポイント
「標準モジュール」に書いてもイベントは反応しないので注意しよう!

ダブルクリックでメッセージを出すコードを書いてみよう

では、実際にコードを書いてみましょう!

シートモジュールを開いて、以下のコードをそのまま貼り付けてみよう。

VBA

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' メッセージを表示する
    MsgBox Target.Address & " がダブルクリックされました!"
    
    ' ダブルクリックによる通常の「編集モード」をキャンセルする
    Cancel = True
End Sub

コードの解説

Worksheet_BeforeDoubleClick

「このシートのセルがダブルクリックされる直前(Before)」に動くイベントの名前である。

Target As Range (引数)

第7回で学んだ「引数」がここで登場する。

Target には、「今ダブルクリックされたセル」が自動的にセットされて渡される。

Cancel = True (超重要!)

通常、Excelでセルをダブルクリックすると「文字が入力できる状態(編集モード)」になる。

Cancel = True と書くことで、「ダブルクリック本来の編集モードに入る動きをキャンセルする」ことができる。これを入れることで、スマートにマクロの処理だけを実行できる。

実際に動かしてみよう!

  1. VBAエディタを閉じる。
  2. 設定したシート上の好きなセル(例: B2 など)をダブルクリックしてみよう。
  3. 「$A$2 がダブルクリックされました!」 とメッセージが表示されれば成功である!

メッセージを閉じても、セルが編集モード(カーソルがチカチカする状態)にならず、すっきり動くのが確認できる。

このファイルを保存するには、Excel マクロ有効ブック(*.xlsm)として保存しよう。

まとめ

今回はイベントプロシージャの基本として、ダブルクリックで動かす仕組みを解説した。

  • イベントプロシージャは「特定の操作」で自動実行される
  • コードは「標準モジュール」ではなく「シートモジュール」に書く
  • Cancel = True で通常ダブルクリックの編集モードをオフにできる

次回は

次回は、今回学んだイベントプロシージャとIf文を組み合わせて、「セルをダブルクリックするたびに『〇』がついたり消えたり(トグル表示)する実用マクロ」を作っていく。

チェックリストや出席簿作りにとても役立つテクニックなので、お楽しみに!

コメント

タイトルとURLをコピーしました