Worksheet_SelectionChangeイベント

ワークシートのイベントマクロ
Worksheet_SelectionChange

リンクユニット


イベント 02回

選択範囲が変更されたときにマクロを実行する

Worksheet_SelectionChangeイベントプロシージャは、Range型の引数Targetを取ります。
ワークシートから、ショートカットキー、Alt + F11を入力して、VBE(Visual Basic Editor)を開きます。
前回は、プロジェクトエクスプローラでSheet1をダブルクリックするか、右クリックメニューでシートのコード画面を表示させました。

(サンプルファイルは、ありません。下部にあるコードをコピーして張り付けてご利用いただけます。)

SelectionChange選択した範囲のアドレスを取得する

1. そしてオブジェクトボックスの三角をクリックして、オブジェクトとして[Worksheet]を 選択しました。 すると、自動的に[プロシージャボックス]は[SelectionChange]になります。デフォルトのイベントが挿入される仕様になっているからです。
このイベントが不要な場合は、消してかまいません。


Worksheet_SelectionChange1 border=0

2. 今回は、シート上でセルを新たに選択したときに、そのアドレスを表示させてみましょう。
セルのアドレスを取得する(Addressプロパティ)を使用します。 Range​オブジェクトのAddressプロパティは、セルやセル範囲のアドレスを文字列で返します。


Worksheet_SelectionChange2 border=0

3. 構文 Object.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
この場合に必要なのは、RowAbsolute, ColumnAbsoluteの2つです。Trueは絶対参照、Falseは相対参照となります。


Worksheet_SelectionChange3 border=0

4. Sheet1を開いて、セルを選択すると、メッセージボックスで、アドレスを表示します。


Worksheet_SelectionChange4 border=0
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  MsgBox Target.Address(False, False)
End Sub

選択したセルの背景色が変わる

5.今度は、メッセージボックスの表示ではなく、新たに選択したセルを操作しましょう。 このコードでは、選択したセルの背景色が変わります。


Worksheet_SelectionChange5 border=0
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Target.Interior.ColorIndex = 18
End Sub