範囲の中の行または列でループ
ある指定範囲の中の、ある指定列について処理したい。例えば、こんな感じです。
Set myRng = Range("B2:F10") で myRng に指定範囲をセットし、何かの都合でその3列目について処理したい。気持ちとしては、こんな感じで上手く動いて欲しいところです。
Sub test() Dim myRng As Range Dim r As Range Set myRng = Range("B2:F10") ' myRngの3列目でループ。 For Each r In myRng.Columns(3) Debug.Print r.Address Next End Sub
でも実際、イミディエイトウィンドウに表示されるのは「$D$2:$D$10」の一行のみ。3列目のセルを一つずつ取り出して処理してくれません。
長年、どうやったら解決できるのか疑問に思っていたのですが、先日とある切っ掛けで解法を得ました。
Sub test() Dim myRng As Range Dim r As Range Set myRng = Range("B2:F10") ' myRngの3列目でループ。 For Each r In myRng.Columns(3).Cells Debug.Print r.Address Next End Sub
範囲指定の最後に「.Cells」を付けるだけで良かったようです。
For Each r In myRng.Columns(3).Cells
これでまた、コードを圧縮することで出来るようになりました。
備忘録を兼ねて紹介します。
参考まで。