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