i循环只进行第一次迭代

时间:2017-02-09 21:00:13

标签: excel vba excel-vba loops

我的i循环遇到了问题。出于某种原因,我的循环只经历了第一次迭代(i=0)然后停止。这是我的代码:

Private Sub DeleteFillerRows()

Dim firstRow As Integer
Dim lastRow As Integer
Dim searchRange As Range

Dim i As Integer
For i = 0 To i = 2
    If i = 0 Then
        lastRow = 1
    End If

    MsgBox (i) 'used for testing, only displays the first i (0)

    Set searchRange = Range("A" & CStr(lastRow) & ":A1000")

    firstRow = searchRange.Find(What:="Name /", LookAt:=xlWhole).Row
    MsgBox (firstRow)

    lastRow = searchRange.Find(What:="Region 1", LookAt:=xlWhole).Row - 2
    MsgBox (lastRow)
Next i

End Sub

任何人都可以帮我吗?我觉得愚蠢的问一个简单的i循环,但我无法看到我可能出错的地方。

1 个答案:

答案 0 :(得分:4)

For循环的界限如下:

For <counter> = <start> To <end>

在您的情况下,<counter>是变量i<start>0<end>是表达式i = 2

它只执行一次的原因是因为表达式i = 2评估为Boolean,并且它始终为false,因为循环的初始值设定项将其设置为0False)。

如果您使用括号重写代码进行分组,那么发生的事情会更加清晰:

For i = 0 To (i = 2)

... ...变为

For i = 0 To False

......这是......

For i = 0 To 0

正如@ScottCraner在评论中正确指出的那样,只需将该行更正为:

For i = 0 to 2