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

use*_*red 6 vba

Dim i As Long
Dim rows As Long
Dim rng3 As Range
rows = rng3.rows.Count
For i = rows To 1 Step (-1)
Run Code Online (Sandbox Code Playgroud)

有谁知道这个循环是如何工作的?我对其含义感到困惑rows To 1 Step (-1).

小智 27

高数字1 添加 (-1)每个迭代

注意:它正在添加因为数学逻辑中的+AND -评估为a-


如果rows = 10那么

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

Debug.Print i在循环内添加一个可能会给你一个更好的线索.

注意:打开Immediate Window点击CTRL+ GView => Immediate Window从VBE菜单栏

在此输入图像描述


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

for i = 1 to 10 step 3
    debug.print i 
next i
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


用法

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

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

  • +1为一个很好的清晰明确的解释. (2认同)

Sam*_*Sam 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
Run Code Online (Sandbox Code Playgroud)