如何检查工作表的可用性

时间:2015-09-05 09:17:21

标签: excel vba excel-vba worksheet

我必须运行一组与工作表相关的代码" wins ",但前提是该工作表存在。

请分享一个代码,以检查表单的可用性"胜利"。如果工作表"胜利"存在,然后我只想运行那组代码,否则我想跳过执行那组代码并转到下一行代码。

2 个答案:

答案 0 :(得分:0)

如果您尝试访问不存在的工作表并将其分配给对象变量,则可以使用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

答案 1 :(得分:0)

Axel的答案很有效。有些人宁愿不使用错误抛出来测试是否存在某些东西。如果您是其中之一,那么我在Utility模块中使用了以下内容。它适用于工作表,图表等(基本上任何具有'名称'属性的集合):

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