Excel 使用嵌套的If语句退出For Each循环

Excel 使用嵌套的If语句退出For Each循环,excel,foreach,vba,Excel,Foreach,Vba,我希望退出For Each循环if ClientWork****=”,并且由于在这个循环中有一个嵌套的if语句调用函数,我希望避免添加一个名称为空且没有数据的工作表。这就是我所尝试的,也是我努力的结果: 我对每个循环都有一个: For Each q In Range(ClientWork****) Sheets("Schedules").Activate ClName = q.Value TabName = ClName 以及引用名为“SheetExists”的函数的嵌套If语句

我希望退出For Each循环if ClientWork****=”,并且由于在这个循环中有一个嵌套的if语句调用函数,我希望避免添加一个名称为空且没有数据的工作表。这就是我所尝试的,也是我努力的结果:

我对每个循环都有一个:

 For Each q In Range(ClientWork****) 
 Sheets("Schedules").Activate
  ClName = q.Value
  TabName = ClName
以及引用名为“SheetExists”的函数的嵌套If语句:

如果“ClientWork****”=”,我想退出For-each循环,因此在下一个q语句上方:

    If ClientWork**** = "" then Exit For
认为它将绕过整个For-Each循环

我希望这能奏效,但首先有一个问题:

SheetExists是一个函数,当SheetExists=False时,它将返回并添加一个工作表,并且执行更多操作。因此,在SheetExists函数中,我的想法是确保它返回SheetExists=True。功能如下:

 Function SheetExists(sheetName As String)
   Dim Sheet As Worksheet
     For Each sheet in Sheets
       If sheet.Name = sheetName Then
          SheetExists = True
          Exit Function
       else
          SheetExists = False
        End If
       Next
     End Function
好的,在If语句的第一部分,我包含了一个OR参数:

     If sheet.Name = sheetName OR sheetName = "" Then
       SheetExists = True
       Exit Function
希望不会添加带有空白名称的工作表

没有快乐。。。它仍然会添加一个工作表,即一个名称为空的工作表,然后在尝试格式化该工作表时,如果认为有数据要格式化,就会产生问题


有什么建议吗?

我不确定您是否可以创建没有名称的工作表。您是否确认该值为空而不是空格

此外,我不会将该功能添加到SheetExists函数中。这做了一个非常明确的工作:工作表存在吗?就这样吧

我想把它补充到这项声明中。到时它会读得更清楚

If SheetExists(TabName) = False And TabName <> "" Then
如果SheetExists(TabName)=False和TabName“”,则

谢谢@Todd。。。我要试试这个。你是对的,NewSheetName=ClName,它是ClName,是空的。我刚刚用你建议的添加运行了代码,但它仍然添加了一个没有数据的工作表ClName,因此它在下游创建了一个格式问题。谢谢你,托德。我将编写一个If语句,如果ClName为“”,它将围绕这段代码分支。
If SheetExists(TabName) = False And TabName <> "" Then