「エクセル Each~Next中のセルの番地を知りたい」
という検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。
For Each~Next文で、いずれかのセル範囲を処理する際に、処理しようとしているセルの番地・セルアドレスを調べるには、どのようなコードを書けばいいのかを探していた方による検索です。
For Each~Next中のセルアドレスを確認するサンプル
以下のSubプロシージャが参考になるでしょう。
Dim rng As Range
For Each rng In Range("A1:C3")
rng.Select
Debug.Print rng.Address(False, False)
Next
End Sub
上記のSubプロシージャを拙著『いちばんやさしいExcel VBAの教本』でも多用しているショートカットキー[F8]でステップ実行すると、A1セルからC3セルまでが順番に選択され、セル番地を表す文字列
A1
B1
C1
A2
B2
C2
A3
B3
C3
が、イミディエイトウィンドウに出力される様子を確認できます。
セルアドレスを取得するRange.Addressプロパティ
Rangeオブジェクトに用意されているAddressプロパティで、
セル番地を表す文字列が取得できます。Range.Addressプロパティは、引数を何も指定しなかった場合、
$A$1
$B$1
のように絶対参照形式のセル番地が取得できます。
相対参照形式のセル番地を取得したい場合は、上記のSubプロシージャのように論理値Falseを最初の2つの引数(RowAbsoluteとColumnAbsolute)に指定します。
なお、
rng.Select
は、処理内容をわかりやすくするために入れているだけですから、選択しなくてもAddressプロパティでセル番地は取得できます。
最終更新日時:2020-09-11 16:59
Home » Excel VBA Rangeオブジェクト » For Each~Next文で処理しようとしているセルの番地を調べるには