在Excel中循环范围的每一行

这是我确信有一个内置函数(以前我可能已经被告知了这个函数)的其中一个,但是我正在抓我的脑袋去记住它。

如何使用Excel VBA遍历多列范围的每一行? 我一直在寻找的所有教程似乎只是提到了一个一维范围的工作…

Dim a As Range, b As Range Set a = Selection For Each b In a.Rows MsgBox b.Address Next 

像这样的东西:

 Dim rng As Range Dim row As Range Dim cell As Range Set rng = Range("A1:C2") For Each row In rng.Rows For Each cell in row.Cells 'Do Something Next cell Next row 

在循环中,我总是喜欢使用Cells类,使用R1C1引用方法,如下所示:

 Cells(rr, col).Formula = ... 

这使我能够轻松快捷地遍历一系列单元格:

 Dim r As Long Dim c As Long c = GetTargetColumn() ' Or you could just set this manually, like: c = 1 With Sheet1 ' <-- You should always qualify a range with a sheet! For r = 1 To 10 ' Or 1 To (Ubound(MyListOfStuff) + 1) ' Here we're looping over all the cells in rows 1 to 10, in Column "c" .Cells(r, c).Value = MyListOfStuff(r) '---- or ---- '...to easily copy from one place to another (even with an offset of rows and columns) .Cells(r, c).Value = Sheet2.Cells(r + 3, 17).Value Next r End With 

刚刚偶然发现,我想我会build议我的解决scheme。 我通常喜欢使用内置的多范围数组(我猜这也是我的JS程序员)分配范围的function。

我经常写这样的代码:

 Sub arrayBuilder() myarray = Range("A1:D4") 'unlike most VBA Arrays, this array doesn't need to be declared and will be automatically dimensioned For i = 1 To UBound(myarray) For j = 1 To UBound(myarray, 2) Debug.Print (myarray(i, j)) Next j Next i End Sub 

给variables赋值范围是在VBA中操纵数据的一个非常有效的方法。