特定のセル範囲が変更されたときに処理を実行する|Excel VBA |
Intersectメソッドと、ワークシートのChangeイベントを組み合わせることで、特定のセル範囲が変更されたときのみ処理を実行することができます。
構文 Intersect(Args1, Args2,[Args3]・・・・[Args30])
設定項目 | 内容 |
---|---|
Args | Rangeオブジェクト |
Intersectメソッドは、引数に指定したセル範囲の中で共通するセル範囲を表すRangeオブジェクトを返します。共通部分が無い場合は、Nothingを返します。
また、ワークシートのChangeイベントでは、変更されたセル範囲を表すRangeオブジェクトが引数Targetに渡されます。これらを利用して特定のセル範囲が変更されたときのみ処理を実行するマクロを作成することができます。
次のサンプルは、値を変更したセルがセルA1〜B5に含まれる場合にのみ、メッセージボックスを表示します。対象とするワークシートのシートモジュールに記述してください。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:B5")) Is Nothing Then
Exit Sub
Else
MsgBox "セルの値が変更されました"
End If
End Sub