イベントプロシージャーは中身だけ書く

プロシージャの中で、イベントプロシージャだけは中身だけ書く。イベントはオブジェクトがすでに持っている機能なので自分で「 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)
カテゴリー: 14 イベントの使い方 <VBA> パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です