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

时间:2015-09-24 18:14:35

标签: excel-vba foreach vba excel

我想退出For Each循环如果ClientWork **** =“”然后因为我们在这个循环中有一个嵌套的If语句调用一个函数,我想避免添加一个有一个空白名称,没有数据。所以这就是我尝试过的,也是我努力的结果:

我有一个For Each Loop:

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

和引用名为“SheetExists”的函数的嵌套If语句:

  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 ****”=“”我想退出For each循环,那么就在我们拥有的Next 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

希望不会添加带有空白名称的工作表。

没有快乐......它仍然会添加一张工作表,即一张带有空白名称的工作表,然后在尝试格式化此工作表时会产生问题,因为有数据需要格式化。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以创建没有名称的工作表。你确认这个值是空白而不是说空格吗?

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

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

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