繁体   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