簡體   English   中英

To和Step在VBA中意味着什么?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM