教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA シート操作】シートで選択範囲が変更された時に発生するイベントプロシージャを作成するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' 実行したいコードをここに記述する
End Sub

解説

Worksheet_SelectionChangeイベントプロシージャは、シート上でセルの選択範囲が変更されたときに実行されるコードを記述するために使用されます。例えば、特定のセルに数値を入力すると、その数値に応じて自動的に色を変更する必要があるとします。この場合、数値の範囲を監視し、色の変更処理を実装することができます。引数は以下の内容となります。

引数 内容
Target このイベントが発生した際に選択されたセルや範囲を表すRangeオブジェクトとなります。

プログラミング例

以下に、具体的なプログラミング例を示します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("A1:B10")) Is Nothing Then
        If IsNumeric(Target.Value) Then
            If Target.Value > 10 Then
                Target.Interior.Color = RGB(255, 0, 0) ' 赤色に変更
            Else
                Target.Interior.Color = RGB(0, 255, 0) ' 緑色に変更
            End If
        End If
    End If
End Sub

この例では、セルの選択範囲がA1からB10の範囲内である場合に、選択したセルの値が数値であるかどうかをチェックします。もし数値であれば、その値が10より大きい場合はセルの背景色を赤色に、10以下の場合は緑色に変更します。これにより、数値の入力に応じてセルの色を自動的に変更する処理が実現されます。

まとめ

Worksheet_SelectionChangeイベントプロシージャは、セルの選択範囲が変更されたときに実行されるコードを記述するために使用されます。セルの選択範囲に応じて特定の処理を自動化したい場合に便利です。是非活用してください。