Mar*_*ret 107 excel vba loops excel-2003
这是我确定有一个内置功能的东西之一(我过去可能已经被告知过了),但我正在摸不着想要记住它.
如何使用Excel VBA循环遍历多列范围的每一行?我一直在搜索的所有教程似乎只提到在一维范围内工作......
Dav*_*res 141
像这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
Mik*_*ike 140
Dim a As Range, b As Range
Set a = Selection
For Each b In a.Rows
MsgBox b.Address
Next
Run Code Online (Sandbox Code Playgroud)
刚偶然发现这一点,以为我会建议我的解决方案。我通常喜欢使用将范围分配给多维数组的内置功能(我想我也是JS程序员)。
我经常这样写代码:
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
Run Code Online (Sandbox Code Playgroud)
将范围分配给变量是在VBA中处理数据的一种非常有效的方法。
在循环中,我总是喜欢使用Cells类,使用R1C1引用方法,如下所示:
Cells(rr, col).Formula = ...
Run Code Online (Sandbox Code Playgroud)
这使我能够快速,轻松地循环在范围细胞容易:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
379981 次 |
| 最近记录: |