Worksheet_SelectionChangeイベント
イベント 02回
選択範囲が変更されたときにマクロを実行する
Worksheet_SelectionChangeイベントプロシージャは、Range型の引数Targetを取ります。
ワークシートから、ショートカットキー、Alt + F11を入力して、VBE(Visual Basic Editor)を開きます。
前回は、プロジェクトエクスプローラでSheet1をダブルクリックするか、右クリックメニューでシートのコード画面を表示させました。
(サンプルファイルは、ありません。下部にあるコードをコピーして張り付けてご利用いただけます。)
SelectionChangeの構文
Worksheet_SelectionChange
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
引数名 | データ型 | 説明 |
---|---|---|
Target | Range | 新しい選択範囲が渡されます。 |
Private Sub Worksheet_SelectionChange(ByVal Target As Range) ’処理したい内容をここに記述 End Sub
SelectionChange選択した範囲のアドレスを取得する
1. そしてオブジェクトボックスの三角をクリックして、オブジェクトとして[Worksheet]を 選択しました。
すると、自動的に[プロシージャボックス]は[SelectionChange]になります。デフォルトのイベントが挿入される仕様になっているからです。
このイベントが不要な場合は、消してかまいません。
2. 今回は、シート上でセルを新たに選択したときに、そのアドレスを表示させてみましょう。
セルのアドレスを取得する(Addressプロパティ)を使用します。 RangeオブジェクトのAddressプロパティは、セルやセル範囲のアドレスを文字列で返します。
Range.Address プロパティ
3. ここでアドレスを取得するには、RangeオブジェクトのAddress プロパティを使います。
構文 Object.Address(RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
この場合に必要なのは、RowAbsolute, ColumnAbsoluteの2つです。Trueは絶対参照、Falseは相対参照となります。
Address構文
.Address (RowAbsolute, ColumnAbsolute, ReferenceStyle, External, RelativeTo)
引数名 | データ型 | 説明 |
---|---|---|
RowAbsolute | Optional | 行部分の参照を絶対参照として返すには、 True を指定。 |
ColumnAbsolute | Optional | 列部分の参照を絶対参照として返すには、 True を指定。 |
ReferenceStyle | 省略可能 | 参照形式を指定します。 既定値は xlA1。 |
External | Optional | 外部参照を返すには、 True を指定。 |
RelativeTo | Optional | RowAbsolute および ColumnAbsolute が False であるときに、ReferenceStyle が xlR1C1 である場合は、相対参照の開始点を含める必要があります。 この引数は開始点を定義する Range オブジェクトです。 |
4. Sheet1を開いて、セルを選択すると、メッセージボックスで、アドレスを表示します。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) MsgBox Target.Address(False, False) End Sub
選択したセルの背景色が変わる
5.今度は、メッセージボックスの表示ではなく、新たに選択したセルを操作しましょう。 このコードでは、選択したセルの背景色が変わります。
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Interior.ColorIndex = 18 End Sub