教えて!ExcelVBA!

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

ExcelVBAでシートで選択範囲が変更された時に処理を実行する方法

構文

構文は以下の通りです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' 選択範囲が変更された時の処理を書く
End Sub

解説

Worksheet_SelectionChangeは、選択範囲が変更されたときに発生するイベントです。Targetは、変更された選択範囲を受け取ります。

プログラミング例

具体的なプログラミング例を紹介します。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        MsgBox "選択されたセルは " & Target.Address & " です。"
    Else
        MsgBox "選択された範囲は " & Target.Address & " です。"
    End If
End Sub

上記のプログラムは、シート上でセルやセル範囲を選択するたびに、選択されたセルや範囲の住所(アドレス)が表示されるメッセージボックスを表示します。1つのセルだけが選択された場合は1、それ以外の場合は範囲としてカウントされます。

まとめ

Worksheet_SelectionChangeイベントは、シートの選択範囲が変更されたときに自動的に処理を実行することができます。