首页 > 解决方案 > 嵌套 For 循环停止中游

问题描述

在下面的代码中 LastCellR = 49 并且 LastSheet 是 61(即工作簿中有 61 个工作表,活动工作表的第 1 列中有 49 个客户名称)代码运行良好,直到我达到 46 并且 CS 达到 61。然后在调试,代码停止并突出显示“If Worksheets(CS).Name = ClientName Then”。

这里的目标是查看客户名称列表并确定它们是现有客户还是新客户。因此,我只需获取每个客户的姓名并搜索工作簿中的工作表名称。
任何想法为什么它停止死在它的轨道上?

感谢您提供的任何见解。

For i = 2 To LastCellR
    ClientName = Cells(i, 1).Value
    If Trim(ClientName) = "" Then Exit Sub

' Check for existing client
    For CS = 1 To LastSheet
        If Worksheets(CS).Name = ClientName Then
           NewClient = False
           Exit For
        End If
    Next CS
Next i

标签: excelvbanested

解决方案


不是您问题的答案,可能是检查工作表的另一种选择

Public Function WorksheetExists(strName As String) As Boolean
On Error GoTo eHandle

Dim ws As Excel.Worksheet

WorksheetExists = True

Set ws = ThisWorkbook.Worksheets(strName)

Set ws = Nothing

Exit Function

eHandle:

    WorksheetExists = False
    Resume Next
    
End Function

然后newclient = not worksheetexists(clientname)


推荐阅读