dポイントプレゼントキャンペーン実施中!

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)

これにするとエラーになります。

A 回答 (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
 
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/03/10 22:57

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


です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/03/10 22:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!