Excel 为什么我的For循环在最后一行之前退出?

Excel 为什么我的For循环在最后一行之前退出?,excel,vba,for-loop,Excel,Vba,For Loop,我有一个相当简单的For循环,它查看两列-NAME和JOB。如果单元格中有逗号分隔的名称,它将触发一个函数,将每个名称插入下一行,然后获取新行数并将其添加到最后一行值减去1。然后,如果该名称旁边没有作业,则使用上面的作业值+1 我遇到的问题是,尽管我可以看到LastRow值正在逐步添加到中,但在循环开始时达到原始LastRow值后,循环仍然存在 i、 e.如果循环开始时LR=100,但由于CountUnique,LR现在=115,则循环在100之后仍然存在 我不明白为什么 LR = Range

我有一个相当简单的For循环,它查看两列-NAME和JOB。如果单元格中有逗号分隔的名称,它将触发一个函数,将每个名称插入下一行,然后获取新行数并将其添加到最后一行值减去1。然后,如果该名称旁边没有作业,则使用上面的作业值+1

我遇到的问题是,尽管我可以看到LastRow值正在逐步添加到中,但在循环开始时达到原始LastRow值后,循环仍然存在

i、 e.如果循环开始时LR=100,但由于CountUnique,LR现在=115,则循环在100之后仍然存在

我不明白为什么

 LR = Range("B" & Rows.Count).End(xlUp).Row

' Mirror missing attributes
    For i = 2 To LR
        If InStr(Cells(i, 2).Value, ",") Then
            LR = LR + CountUnique(Cells(i, 2)) - 1
        End If
        If Cells(i, 1).Value = "" Then
            Cells(i, 1).Value = Cells(i - 1, 1).Value
        End If

    Next i

Public Function CountUnique(r As Range) As Integer

  Dim c As Collection
    Set c = New Collection
    ary = Split(r.Text, ",")
    On Error Resume Next
    For Each a In ary
        c.Add a, CStr(a)
        If Err.Number = 0 Then

            If CountUnique >= 1 Then
                r.Offset(CountUnique, 0).EntireRow.Insert
                r.Offset(CountUnique, 0).Value = Trim(a)
            End If

            CountUnique = CountUnique + 1
        Else
            Err.Number = 0
        End If
    Next a

 r.Value = c.Item(1)

End Function

在VB中,For循环的边界在开始时计算一次,并缓存值


如果需要动态上限,则需要使用Do循环。

谢谢!出于某种原因,我总是避免使用Do循环。在RE-to缓存中提供非常有价值的信息。