我想退出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
希望不会添加带有空白名称的工作表。
没有快乐......它仍然会添加一张工作表,即一张带有空白名称的工作表,然后在尝试格式化此工作表时会产生问题,因为有数据需要格式化。
有什么建议吗?
答案 0 :(得分:0)
我不确定您是否可以创建没有名称的工作表。你确认这个值是空白而不是说空格吗?
此外,我不会将功能添加到SheetExists功能。这是一项非常明确的工作:工作表是否存在?保持原样。
我会将其添加到此声明中。它会更清楚地阅读。
If SheetExists(TabName) = False And TabName <> "" Then