For Each~Nextループで、行ごとに処理するExcel VBAのコードについて記事を公開しています。
列ごとに処理する例もご紹介しておきます。
For Each~Next文で列ごとに処理するサンプル
セル範囲を列ごとに処理する場合は、以下のようなコードです。
Dim rng As Range
For Each rng in Range("A1:C3").Columns
rng.Select
Debug.Print rng.Address(False, False)
Next
End Sub
上記のSubプロシージャを、拙著『いちばんやさしいExcel VBAの教本』でも多用しているショートカットキー[F8]でステップ実行すると、アクティブなワークシートの、
1列目(A1:A3セル)
2列目(B1:B3セル)
3列目(C1:C3セル)
が順番に選択され、セル番地がイミディエイトウィンドウに出力されます
Range.Columnsで列を単独オブジェクトとして含むRangeコレクションを取得
Rangeオブジェクトに用意されているColumnsプロパティを使うと、列を単独のオブジェクトとして含むコレクションとしてのRangeオブジェクトを取得できます。
ポイントはもちろん、Rangeオブジェクトに用意されているColumnsプロパティです。
For Each rng in Range("A1:C3").Columns
「Range("A1:C3")」の場合、A1からC3の個々のセルを単独のオブジェクトとして含む、Countプロパティが9を返すコレクションが取得できます。
「Range("A1:C3").Columns」の場合、A1:A3・B1:B3・C1:C3の各列を単独のオブジェクトとして含む、Countプロパティが3を返すコレクションを取得できます。
上記のSubプロシージャを、ステップ実行する様子を動画にしています。よろしければご覧ください → YouTube「ExcelVBAのForEachで列ごとに処理」
- Newer:表の中の表を削除するWordマクロ
- Older:WholeStory後にCopyを
Home » Excel VBA Rangeオブジェクト » 行・列を表すRange » For Eachで列ごとに処理するには