[英]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.