• ベストアンサー

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) これにするとエラーになります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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  

zzdwyzqzwusnd
質問者

お礼

回答ありがとうございました。

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

for each r in range(cells(1, col), cells(rows.count, col).end(xlup)) です。

zzdwyzqzwusnd
質問者

お礼

回答ありがとうございました。