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)
的含义感到困惑。
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)
注意:之所以是相加,是因为在数学逻辑中,+
和-
的运算结果都是一个-
如果rows = 10
,那么
for i = 10 to 1 step -2
的意思是从10
循环回到1
,在每个循环周期中从 i中减去2
在循环中添加Debug.Print i
可以更好地了解情况。
注意:打开Immediate Window
,按CTRL+G或从VBE菜单栏选择View => Immediate Window
一个示例循环,每个周期增加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 4 7 10 13
这意味着它不能超过14,即为限制。
因此,无论在步骤中提供什么值,它都将添加到用于循环目的的变量中。在这里
i = i +3
但在VBA的For循环中,步长值无法动态更改。例如:
Dim i As Integer
For i = 1 To 10 Step i
Debug.Print i
Next i
在这里,在开始迭代之前,步骤等于默认值 i 的值,即0。因此,i 将像下面这样递增:
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
在这里,循环执行之前i等于3,因此步长值将为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
1 3 5 7 9
如果我有任何遗漏或错误,请纠正我。同时,如果有任何使用VBA中的For循环进行动态循环的方法,请提出建议。