[英]What does the To and Step mean in VBA?
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
循环从每个循环周期中的i
减去 2
。
在循环中添加一个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+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
这里,我在循环执行前等于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循环是否有任何动态循环方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.