VBAのイベント
<< オブジェクトのメソッド :前の記事
ここまで「オブジェクト」「プロパティ」「メソッド」について解説してきました。それぞれの関係やオブジェクトの値の取得や操作については理解されたかと思います。今回は少し特殊なオブジェクトの操作ができる「イベント」について解説していきます。
目次
イベントとは
イベントとはオブジェクトに対する処理や操作のことを言います。例えば、ワークシートをアクティブにした時に発生するActivateイベントやセルをマウスでダブルクリックした時に発生するBeforeDoubleClickイベントなどがあります。
ここまでの解説の中でオブジェクトを操作するには「メソッド」を利用し、以下のように記述すると説明しました。
オブジェクト名.メソッド名
ここまでの知識であれば、ワークシートをアクティブにした時に発生するActivateイベントの記述は以下のようになるのでは?と思われる方もいらっしゃるかもしれませんが、こちらは単にWorksheetオブジェクトのActivateメソッドを実行したに過ぎません。
Sub Sample()
Worksheets("Sheet1").Activate
End Sub
では、どのように記述するかというとVBE構造のモジュールの種類で少し触れた、シートモジュールとブックモジュールにプロシージャとして記述します。
プロシージャの詳細について「エクセルVBAのプロシージャとは」で解説しますが、プロシージャとは複数の処理を一つにまとめたものになります。
イベントの使い方
下記はExcelのSheet1に対してワークシートをアクティブにした時に発生するイベントプロシージャです。
イベントプロシージャも「プロパティ」「メソッド」と同様に決まった書式に則って記述します。決まった書式とは、以下のようにオブジェクト名とイベント名の間に「_(アンダースコア)」で結んで記述します。
オブジェクト名_イベント名
イベントを設定する
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range("A1").Value = "VBA"
End Sub
こちらはセルをダブルクリックした時に発生するイベントプロシージャになります。オブジェクト名は「Worksheet」でイベント名は「BeforeDoubleClick」になります。このイベントプロシージャの中の処理は「A1セルにVBAの文字列を代入する」処理になります。よって、以下のようにセルをダブルクリックした時にA1セルに「VBA」の文字列が代入されます。
ちなみにイベント名は直接入力する必要はなく、コードウィンドウのオブジェクトボックスからオブジェクトを選択し、プロシージャボックスからイベントを選択します。こうすることで入力ミスを無くすことができますので、選択からイベントを作成するようにしましょう。
まとめ
今回はイベントについて解説しました。イベントはプロシージャとして実行されることが理解できたかと思います。次回はExcelのワークシートに対するイベントについて解説します。こちらではワークシートに対するイベントでどのようなものがあるかを確認できます。
次の記事: ワークシートに対するイベント >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。