VBAプログラム(ワークシートイベント2)

前回作成したサンプルプログラムを動かしてみましょう。

Private Sub Worksheet_Change(ByVal Target As Range)の実行

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を選択して中央赤枠に下記プログラムコードを書き写します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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が連携することとなります。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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を作っていきます。

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