Worksheet_SelectionChange (mm0727)

Worksheet_SelectionChange についてわかりやすく説明します


(1) Worksheet_SelectionChangeとは


(2) [エクセルVBAのHELP]から


(3) Worksheet_SelectionChangeの作成方法


(4) Worksheet_SelectionChangeの簡単な作成方法


(5) Worksheet_SelectionChangeの基本


(6) 改めてイベントとは

    [goo辞書]

        << event >> 
        ━━ n. 出来事, (大)事件; 場合 (case); 成り行き, 結果; 
        【スポーツ】種目, (番組中の)一勝負, 一試合; 【コンピュータ】事象, イベント.
        ...
        in that event その場合には. 
        in the event 実際には; 場合には ((of)); もしも…という時には ((that)). 
        ...
        quite an event 重大事件, 一大事. 
        event driven 【コンピュータ】イベント駆動.

    [IT用語辞典w-word]

        << イベント >>
        オブジェクト指向プログラミングにおいて、
        オブジェクトに特定の現象が発生した時に発する信号。
        現象が発生したこと自体のほかに、イベントによってはその現象に関するデータ
        (例えば「キーボードを押した」というイベントなら「押されたキー」のデータ)
        も発せられる。...イベントが発生すると、イベントに1対1で対応した
        メソッドが起動し、イベントに対応した処理を行なう。

    非常ボタンが押された   ← イベントが発生
    パトカーが走ってくる。  → イベントに対応したメソッドを実行する
 
    今回のWorksheet_SelectionChangeはワークシート上で
    マウスを他の場所へ移動したときにイベントが発生して
    Worksheet_SelectionChangeメソッドを実行することになります。
 

(7) 実際の使用例_1

L列を選んだときは1行下のA列をアクティブにする

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column <> 12 Then Exit Sub '12列目(L列)以外は無視する   
        Cells(Target.Row + 1, 1).Select  ' Target行の1行下のA列を選択
End Sub

(8) 実際の使用例_2

式の入ったセルを選択した場合、そのセルのひとつ右横に移動する

    Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

        If Target.HasFormula = True Then   ' Targetに数式があれば

            ActiveCell.Offset(0, 1).Select ' ActiveCellの一つ右へ

        End If

    End Sub 

このコードは式の保護に使えます、ワークシートの保護でもそのセルを [矢印]キーで選択することはできますが、 この方法ではセル選択をできません


(9) 応用編

Worksheet_Change とWorksheet_SelectionChange の組み合わせ セルV125の計算結果が変わったら、指定セルに日付を表記する


Option Explicit
Dim mae As Variant

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ato As Variant
If Target.Address <> "$A$1" Then Exit Sub
    Application.EnableEvents = False
    ato = Range("V125").Value
    If mae <> ato Then        'maeと現在のセルV125の値を比較
        MsgBox "変更されました"
        Range("U1").Value = Date
    End If
    Application.EnableEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
                                '選択セルの範囲が変わったら
    mae = Range("V125").Value	'セルV125の値をmaeにとっておく
End Sub

2016/04/21:更新 2004/07/27:登録 訪問者: Valid HTML 4.01 Transitional