简体   繁体   中英

How to check the availability of a worksheet

I have to run a set of code related to worksheet " wins ", but only if that worksheet exist.

Please share a code to check the availability of sheet "wins". If worksheet "wins" exist, then only I want to run that set of code, else I want to skip executing that set of code and move to next line of code.

You could use On Error Resume Next to skip the errror which occurs if you try access a not existing worksheet and assigning it to a object variable. So if the worksheet does not exist, no error occurs but the variable is Nothing . If the worksheet exists, then the variable is not Nothing .

Example:

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

Axel's answer will work nicely. Some people prefer not to use error throwing to test if something exists. If you're one of them then I use the following quite a lot in a Utility module. It'll work for Worksheets, Charts, etc. (basically anything that's a collection with a 'Name' property):

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

You can call it like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM