2015-09-24 152 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