Home » ExcelVBA Rangeオブジェクト » For Each~Next文で処理しようとしているセルの番地を調べるには

For Each~Next文で処理しようとしているセルの番地を調べるには

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2006 ビルド13001.20384 Microsoft Store)

「エクセル Each~Next中のセルの番地を知りたい」
という検索で、このサイト『インストラクターのネタ帳』へアクセスがありました。

[スポンサードリンク]

For Each~Next文で、いずれかのセル範囲を処理する際に、処理しようとしているセルの番地・セルアドレスを調べるには、どのようなコードを書けばいいのかを探していた方による検索です。

For Each~Next中のセルアドレスを確認するサンプル

以下のSubプロシージャが参考になるでしょう。

Sub For_Each_Nextループ中のセル番地を確認する()
 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
が、イミディエイトウィンドウに出力される様子を確認できます。

なお、この動画 → YouTube「ExcelVBAのForEachで列ごとに処理」の前半で、上記のSubプロシージャをステップ実行するのと同等の様子をご確認いただけます。

セルアドレスを取得するRange.Addressプロパティ

Rangeオブジェクトに用意されているAddressプロパティで、

セル番地を表す文字列が取得できます。Range.Addressプロパティは、引数を何も指定しなかった場合、
  $A$1
  $B$1
のように絶対参照形式のセル番地が取得できます。
相対参照形式のセル番地を取得したい場合は、上記のSubプロシージャのように論理値Falseを最初の2つの引数(RowAbsoluteとColumnAbsolute)に指定します。

なお、
  rng.Select
は、処理内容をわかりやすくするために入れているだけですから、選択しなくてもAddressプロパティでセル番地は取得できます。

最終更新日時:2020-09-11 16:59

[スポンサードリンク]

Home » ExcelVBA Rangeオブジェクト » For Each~Next文で処理しようとしているセルの番地を調べるには

「ExcelVBA Rangeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.