Dim i As Long
Dim rows As Long
Dim rng3 As Range
rows = rng3.rows.Count
For i = rows To 1 Step (-1)
有谁知道这个循环是如何工作的?我对 的含义感到困惑rows To 1 Step (-1)
。
Dim i As Long
Dim rows As Long
Dim rng3 As Range
rows = rng3.rows.Count
For i = rows To 1 Step (-1)
有谁知道这个循环是如何工作的?我对 的含义感到困惑rows To 1 Step (-1)
。
从高数到1
添加 (-1)
每次迭代
注意:添加是因为数学逻辑中的+
AND-
计算为-
如果rows = 10
那时
for i = 10 to 1 step -2
将意味着从每个循环循环中10 to 1
减去 循环返回。2
i
Debug.Print i
在循环内添加一个可能会给你一个更好的线索。
注意:打开Immediate Window
点击CTRL+G或View => Immediate Window
从 VBE 菜单栏
一个示例循环在每个循环中增加 3。
for i = 1 to 10 step 3
debug.print i
next i
用法
后退技术主要用于从电子表格中删除行时。
要查看实践中的逻辑,请参见以下内容
删除行时,通常的做法是从末尾开始并向后退一步,这样就不会跳过任何行。
Dim i As Long
Dim rows As Long
Dim rng3 As Range
rows = rng3.rows.Count
For i = rows To 1 Step (-1)
'delete row if "delete" is in column 1
If rng3.cells(i,1).Value = "delete" Then
rng3.Rows(i).EntireRow.Delete
End If
next i
Dim i as Integer
For i = 1 To 14 Step 3
Debug.Print i
Next i
在上面的代码循环中,将从 1 迭代到 14,增量为 3,因此输出将类似于
1 4 7 10 13
这意味着它不能超过 14 即限制。
因此,在步骤中提供的任何值都将添加到用于循环目的的变量中。这里
i = i +3
但是在 VBA 的 For 循环中,Step 值不能动态改变。例如:
Dim i As Integer
For i = 1 To 10 Step i
Debug.Print i
Next i
在这里,在开始迭代之前 Step 等于 i的值,即默认值,即 0。所以 i 将按如下方式递增:
i = i+ i => i = i+0
所以我不会在这里增加,循环将永远迭代。
现在查看以下代码:
Dim i as Integer
For i = 1 To 14 Step i+1
Debug.Print i
Next i
我会像这样增加:
i=i+(i+1) => i= i+(0+1) =>i = i+1
所以它将增加 1 并且输出将是 1 2 3 .... 14
现在查看以下代码:
Dim i As Integer
i = 3
For i = 1 To 10 Step i
Debug.Print i
Next i
在这里,在循环执行之前 i 等于 3,因此 Step 值将是 3,但循环将从 i = 1 开始,并在整个循环中以 3 递增。这里,
i = i+3
所以输出将是 1 4 7 10。
现在对于其他一些变量:
Dim i As Integer
Dim j As Integer
j = 2
For i = 1 To 10 Step j
Debug.Print i
j = i
Next i
在上面的代码中 Step 值将是 2,所以无论 j 是否在循环内修改,每次迭代我都会增加 2,它不会影响 Step 值,所以输出将是
1 3 5 7 9
如果我遗漏了什么或有什么问题,请纠正我。还建议是否有任何方法可以在 VBA 中使用 For 循环进行动态循环。