動作検証バージョン:Windows 11 Home + 64bit Excel バージョン 2506(ビルド18925.20168クイック実行)
コード「Target.Value」を使った、クリックしたセルの値を取得するイベントプロシージャをご紹介しました。
この記事を公開してから、もっとシンプルなコードで済むことに気が付きました。
[スポンサードリンク]
ActiveCell.Valueを使ってクリックしたセルの値を取得するサンプルプロシージャ
以下のようなWorksheet_SelectionChangeイベントプロシージャでも、クリックしたセルの値がイミディエイトウィンドウに出力されます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim var As Variant
var = ActiveCell.Value
Debug.Print var
End Sub
Dim var As Variant
var = ActiveCell.Value
Debug.Print var
End Sub
もちろん、クリックしたセルの値をイミディエイトウィンドウに出力するだけならば、
Debug.Print ActiveCell.Value
の1行だけでOKです。
サンプルマクロで行っている処理
ご紹介済みの記事では、引数Targetを使っていますが、上記のプロシージャではグローバルメンバーのActiveCellプロパティを使っています。
引数Targetを使う場合は、複数セルが選択されている可能を考慮する必要がありますが、ActiveCellを使えばその必要もありません。
ActiveCellプロパティで取得できるセルの個数は、必ず1つだからです。
念のためGeminiに、
Worksheet_SelectionChangeイベントプロシージャで、新しくアクティブになった1個のセルを取得する場合は、ActiveCellを使っても問題ないと考えています。正しいでしょうか
と質問したところ、
結論として、Worksheet_SelectionChangeイベントでは、単一セル選択の場合に限りActiveCellを使用しても良いですが、より安全で汎用的なコードを書くためには、Targetを使用することを推奨します。
との回答でした。
[スポンサードリンク]
- Newer:VBAで最後のシートを選択する
- Older:Canvaのオーディオトラックの上限数についてaiに質問したら…
Home » エクセルマクロ・Excel VBAの使い方 » イベントプロシージャ » ActiveCell.Valueでもクリックしたセルの値を取得するイベントプロシージャが…