- ベストアンサー
range表記をcells表記にしたい
B列の最終行までループさせたいのですが Sub Sample() Dim col As Long col = 2 For Each R In Range("B1:B" & Cells(Rows.count, "B").End(xlUp).Row) Next End Sub この状態から、Bを使わずに、 col = 2を使って、書き換えてもらっても良いですか? For Each R In Range(Cells(1, col), Cells((Rows.count, col)).End(xlUp).Row) これにするとエラーになります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 Range オブジェクトと、Cells プロパティは、何のつながりもありませんから、With ステートメントで親オブジェクトのWorksheetオブジェクトで、関連付けてあげます。 For Each R In Range(Cells(1, col), Cells((Rows.count, col)).End(xlUp)) '最後のRow は余分です。 あえて、B1を、.Cells(1,col) と書く方法もないわけではありませんが、通常は、以下のようにします。 もし横に移動するなら、あらかじめ、Set rng =Range(範囲)でセットし、rng.Offset(,i) で横移動してもよいかと思います。 '// Sub Sample2() Dim col As Long Dim c As Range col = 2 With ActiveSheet For Each c In .Range("B1", .Cells(Rows.Count, col).End(xlUp)) Next c End With End Sub
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
for each r in range(cells(1, col), cells(rows.count, col).end(xlup)) です。
お礼
回答ありがとうございました。
お礼
回答ありがとうございました。