簡體   English   中英

如何檢查工作表的可用性

[英]How to check the availability of a worksheet

我必須運行一組與工作表“ wins ”相關的代碼,但前提是該工作表存在。

請共享代碼以檢查“獲勝”表的可用性。 如果工作表“獲勝”存在,那么我只想運行該組代碼,否則我想跳過執行該組代碼並移至下一行代碼。

如果您嘗試訪問不存在的工作表並將其分配給對象變量,則可以使用On Error Resume Next跳過發生的On Error Resume Next 因此,如果工作表不存在,則不會發生錯誤,但變量為Nothing 如果工作表存在,則變量不是Nothing

例子:

Sub test()

 Dim wsWins As Worksheet

 On Error Resume Next
 Set wsWins = ActiveWorkbook.Worksheets("wins")
 On Error GoTo 0

 If Not wsWins Is Nothing Then
  MsgBox "Worksheet wins exists."
 Else
  MsgBox "Worksheet wins does not exist."
 End If

End Sub

阿克塞爾的回答會很好地工作。 有些人不喜歡使用錯誤拋出來測試某些東西是否存在。 如果您是其中之一,那么我會在實用程序模塊中大量使用以下內容。 它適用於工作表、圖表等(基本上任何具有“名稱”屬性的集合):

Public Function ExcelObjectExists(testName As String, excelCollection As Object) As Boolean
    Dim item As Object

    On Error GoTo InvalidObject

    For Each item In excelCollection
        If item.Name = testName Then
            ExcelObjectExists = True
            Exit Function
        End If
    Next

    ExcelObjectExists = False
    Exit Function

InvalidObject:
    MsgBox "Developer error: invalid collection object passed in ExcelObjectExists."
    ExcelObjectExists = False

End Function

你可以這樣稱呼它:

    If ExcelObjectExists("wins", ThisWorkbook.Worksheets) Then

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM