2015-09-24 115 views
0

我想退出For Each Loop如果ClientWork **** =“”,然后也因为我们有一个嵌套的If语句在这个循环中调用一个函数,我会比如避免添加一个空白名称和没有数据的表单。所以这是我曾尝试,也发生了什么事我努力的结果:退出一个嵌套的if语句的每个循环

我有一个for each循环:

For Each q In Range(ClientWork****) 
Sheets("Schedules").Activate 
    ClName = q.Value 
    TabName = ClName 

和嵌套如果引用了一个名为“SheetExists”功能的语句:

If SheetExists(TabName) = False Then 
    'Add a new worksheet 
    Sheets.Add After:=Sheets(Sheets.Count) 
    'Set newSheet variable to the new worksheet. 
    Set NewSheet = ActiveSheet 
    NewSheetName = ClName 

我想退出对于每一个循环,如果“ClientWork ****” =“”所以要为此下一步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语句中的第一部分,我包括一个或参数:

 If sheet.Name = sheetName OR sheetName = "" Then 
     SheetExists = True 
     Exit Function 

在那会不会是添加名字空白的纸的希望。

没有快乐......它仍然添加一张纸张,即具有空白名称的纸张,然后在尝试格式化此纸张时认为存在要格式化的数据时会产生问题。

有什么建议吗?

回答

0

我不确定您可以创建没有名称的工作表。你确认价值是空白的,而不是说一个空间?

此外,我不会将功能添加到SheetExists函数。这是一个非常明确的工作:表单是否存在?保持原样。

我会将其添加到此声明中。它会更清晰地阅读。

If SheetExists(TabName) = False And TabName <> "" Then 
+0

谢谢@Todd ...我会试试这个。你是对的,NewSheetName = ClName,它是ClName,它是空白的。 – railsdancer

+0

我刚刚运行了建议添加的代码,但它仍然添加了一个工作表ClName,它没有数据,因此它会在下游创建一个格式问题。无论如何谢谢托德。如果ClName是“”,我将编写一条If语句来分支这段代码。 – railsdancer