2016-03-03 38 views
0

我有一個代碼可以刪除工作表中的選項卡,然後運行另一個代碼。我目前遇到一個問題,如果工作表不存在的代碼給我一個錯誤...我想知道如果我可以做一個if語句,看看如果選項卡在那裏,如果不是它繼續前進,如果它在那裏它會刪除它。我有我寫的代碼已經寫在下面,但我不知道如何在刪除部分做if。如果聲明刪除選項卡,但如果頁面不存在則繼續

謝謝!

Sub delete() 
Dim ws As Worksheet 
Set ws = Worksheets("Workbench Report") 

Application.DisplayAlerts = False 

ws.delete 

Call Sorting 

End Sub 
+0

我認爲你必須遍歷所有表來檢查XD – findwindow

+4

您需要一個函數來檢查工作表存在。你可以在這個[SO Q&A]中找到幾種方法(http://stackoverflow.com/questions/6688131/test-or-check-if-sheet-exists) –

+0

我剛纔看到這個答案在其他頁面上...對不起,我應該刪除這篇文章? –

回答

1

檢查紙張第一存在:

Sub delete() 
    Dim ws As Worksheet 

    If WorksheetExists("Workbench Report") Then 

     Set ws = Worksheets("Workbench Report") 

     Application.DisplayAlerts = False 

     ws.delete 

     Call Sorting 

    End If 

End Sub 

    Public Function WorkSheetExists(SheetName As String, Optional WrkBk As Workbook) As Boolean 
     Dim wrkSht As Worksheet 

     If WrkBk Is Nothing Then 
      Set WrkBk = ThisWorkbook 
     End If 

     On Error Resume Next 
      Set wrkSht = WrkBk.Worksheets(SheetName) 
      WorkSheetExists = (Err.Number = 0) 
      Set wrkSht = Nothing 
     On Error GoTo 0 
    End Function 
+2

請注意,這個問題已經被問及已經在SO [這裏]回答得很好(http://stackoverflow.com/questions/6688131/test-or-check-if-sheet-exists) –

+0

這個作品非常完美,非常感謝你! :) –

0

試試這個

Sub delete() 
Dim i As Integer 

i = 1 

Application.DisplayAlerts = False 

While i <= ActiveWorkbook.Worksheets.Count 

Sheets(i).Select 

If ActiveSheet.Name = "Workbench Report" Then 

ActiveSheet.delete 

End If 

i = i + 1 

Wend 

Call Sorting 

Application.DisplayAlerts = True 

End Sub 
+2

請注意,這個問題已被問及已在SO [這裏]回答得很好(http://stackoverflow.com/questions/6688131/test-or-check-if-sheet-exists) –