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

时间:2013-10-30 15:28:17

标签: 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)的含义感到困惑。

3 个答案:

答案 0 :(得分:27)

高数1 每次迭代添加 (-1)

注意: 添加,因为数学逻辑中的+-评估为-


如果rows = 10

for i = 10 to 1 step -2意味着从10 to 1 每个循环周期中的2减去 i

在循环中添加Debug.Print i可能会为您提供更好的线索。

注意:从VBE菜单栏中打开Immediate Window CTRL + G View => Immediate Window < / p>

enter image description here


每个循环增加3的示例循环。

for i = 1 to 10 step 3
    debug.print i 
next i

enter image description here


用法

当从电子表格中删除行时,主要使用后退技术。

要在实践中查看逻辑,请参阅以下内容

答案 1 :(得分:5)

删除行时,通常会从最后开始向后退一步,这样就不会跳过任何行。

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

答案 2 :(得分:0)

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循环进行动态循环是否有任何方法。