前回作成したサンプルプログラムを動かしてみましょう。
Private Sub Worksheet_Change(ByVal Target As Range)の実行
Application.EnableEvents = False
cr1 = Target.Row
cc1 = Target.Column
If cr1 = 1 And cc1 = 1 Then
Cells(2, 1) = “Test1”
End If
Application.EnableEvents = True
End Sub
前回記事で解説したように①A1セルに空白から”t”を入力すると変更(change)があったためA2セルに”Test1”が代入されます。
VBA初めての方は同じように試してください。
次に②”A1:A2″の2つのセルを選択してDELETEしてみてください。A2セルには”Test1”が残ります。これはA1セルが“t”から空白に変更(change)されたため再度A2セルには”Test1”が代入された結果です。続いて③A2セルのみを選択してDELETEしてみてください。するとA2セルは空白になります。
④A1セルに空白から”t”以外を入力してもA2セルに”Test1”が代入されることも確認してみてください。
次はWorksheet_SelectionChange(ByVal Target As Range)に進みます。
Worksheet_SelectionChange
右赤枠でSelectionChangeを選択して中央赤枠に下記プログラムコードを書き写します。
cr1 = Target.Row
cc1 = Target.Column
If cr1 = 1 And cc1 = 2 Then
Cells(2, 1) = “Test”
End If
End Sub
Worksheet_SelectionChangeはワークシート内で選択したセルが変更されたときにイベントが発生します。
B1セル以外からB1セルを選択するとSelectionChangeイベントが発生してB2セルに”Test”が入力されます。
プログラムコードの意味がわからない場合はVBAプログラム(ワークシートイベント1)に戻りましょう。
Private Sub Worksheet_Change(ByVal Target As Range)とWorksheet_SelectionChangeが連携
以下の赤字の部分を一文字を変えるだけでPrivate Sub Worksheet_Change(ByVal Target As Range)とWorksheet_SelectionChangeが連携することとなります。
cr1 = Target.Row
cc1 = Target.Column
If cr1 = 1 And cc1 = 2 Then
Cells(1, 1) = “Test”
End If
End Sub
順番としてはすべてのセルを空白の状態から
① B1セル以外から”B1″セルを選択するとSelectionChangeイベントが発生してA1セルに”Test”が入力されます。
② A1セルに”Test”が入力されたことでPrivate Sub Worksheet_Change(ByVal Target As Range)イベントが発生してA2セルに”Test1”が代入されます。
VBA初めての方は簡単に感じられるまで何度も繰り返し、また変更を加えながら試してみてください。
今回は以上となります。
次回はmoduleを作っていきます。