Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "実行しました"
End Sub
VBE画面でみるとこんな感じです。
選択セルを変更したときに、マクロを実行できます。
選択セルを変更してみる
選択セルを変更したときに、マクロを実行できました。
「Target」で選択セルのアドレスを取得
「Target」で選択セルのアドレスを取得することができます。
変更した選択セルのアドレスを取得
変更した選択セルのアドレスを取得するVBAコードです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'選択したセルのアドレスを取得
MsgBox Target.Address
End Sub
VBE画面でみるとこんな感じです。
選択セルを変更して、選択セルのアドレスを取得できます。
変更した選択セルのアドレスを取得
選択セルを変更して、選択セルのアドレスを取得できました。
列を指定して実行
選択セルの変更時に、実行する「列」を指定してみます。
「1列目」に変更した場合に実行
「1列目」に変更した場合に実行するVBAコードです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'「1列目」の場合
If Target.Column = 1 Then
MsgBox "実行しました"
End If
End Sub
選択セルを「1列目」に変更して、マクロを実行してみます。
「1列目」に変更
選択セルを「1列目」以外に変更しても、実行されないです。
「1列目」以外に変更
実行されないですね。
実行するセル範囲を「1列目」に限定できました。
行を指定して実行
選択セルの変更時に、実行する「行」を指定してみます。
「1行目」に変更した場合に実行
「1行目」に変更した場合に実行するVBAコードです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'「1行目」の場合
If Target.Row = 1 Then
MsgBox "実行しました"
End If
End Sub
選択セルを「1行目」に変更して、マクロを実行してみます。
「1行目」に変更
選択セルを「1行目」以外に変更しても、実行されないです。
「1行目」以外に変更
実行されないです。
実行するセル範囲を「1行目」に限定できました。
セル範囲を指定して実行
選択セルの変更時に、実行するセル範囲を指定してみます。
「A1」に変更した場合に実行
「A1」に変更した場合に実行するVBAコードです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'「A1」の場合
If Not Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "実行しました"
End If
End Sub
セル範囲を指定する場合は、「Intersect」が使えます。
「InterSect」の使い方です。
「InterSect」の使い方
「InterSect」は2つの範囲で、重なるセル範囲を返します。
2つの範囲で、重なるセルがない場合は、「Nothing」を返します。
今回は、「If Not Intersect(範囲1, 範囲2) Is Nothing Then」となっています。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'「A1:B2」の場合
If Not Intersect(Target, Range("A1:B2")) Is Nothing Then
MsgBox "実行しました"
End If
End Sub
選択セルを「A1」に変更して、マクロを実行してみます。
「A1」に変更
選択セルを「B2」に変更して、マクロを実行してみます。
「B2」に変更
選択セルを「A1:B2」以外に変更しても、マクロは実行されないです。
「A1:B2」以外に変更
実行するセル範囲を「A1:B2」に限定できました。
とびとびのセル範囲を指定して実行
選択セルの変更時に、実行する範囲に「とびとびのセル範囲」を指定してみます。
「A1」か「A3」に変更した場合に実行
「A1」か「A3」に変更した場合に実行するVBAコードです。
「A1」と「A3」を「Union」で結合するところがポイントです。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'「A1」と「A3」を結合
Dim A
Set A = Union(Range("A1"), Range("A3"))
'「A1かA3」の場合
If Not Intersect(Target, A) Is Nothing Then
MsgBox "実行しました"
End If
End Sub