プロシージャの中で、イベントプロシージャだけは中身だけ書く。イベントはオブジェクトがすでに持っている機能なので自分で「 Private Subから()など」を書かない。「 Private SubからEnd Sub」まではモジュールの上にあるイベント/プロシージャのリストから選択して入れる。
Workbook_Openイベントは、ワークブック、Excelのファイルを開いたタイミングで自動的にイベントが発生する。オブジェクトごとにイベントは決まっており、Sheet1などのワークシートにはファイル関係のイベントは無い。
練習:Worksheet_SelectionChangeプロシージャに
Debug.Print "Worksheet_SelectionChange",Targetと入れてどのタイミングで動作するか引数のデータは何か確認する
オブジェクトボックスから「Worksheet」を選択するとWorksheet_SelectionChangeプロシージャーがすぐに現れるのでプロシージャ内にコードを追加する。プロシージャを書いたワークシートのセルを変更するタイミングでイベントを発生する。他のワークシートでは発生しない。
練習:どんなデータを入れても1が入るようにする。
2行の赤い行だけを入力する。Private SubからEnd SubまではWorksheetオブジェクトをオブジェクトボックスから選択し、Worksheet_Changeはイベントボックスから選択する。
Private Sub Worksheet_Change(ByVal Target As Range)
Debug.Print Now
Target = 1
End Sub
Nowによって多くの時間を表示する。「Target = 1」をコメントアウトすると1度しかイベントは発生しない。イベントの中で自分のデータを変更するために何度もイベントが発生する。
(Visited 108 times, 1 visits today)