跳到主要内容

判断是否存在指定名称的工作表

工作薄中的所有表,包括工作表、宏表和图表等的名称是唯一的。如果要判断工作簿中是否存在指定名称的工作表,可以用以下几种方法:

方法一

本示例使用自定义函数判断活动工作簿中是否存在指定名称的工作表。

Function SheetExist(ByVal strShtName As String) As Boolean
    Dim Sht As Worksheet
    On Error Resume Next
    Set Sht = Worksheets(strShtName)
    If Err.Number = 0 Then SheetExist = True
    Set Sht = Nothing
End Function

代码解析

SheetExist 函数包含一个 String 类型的参数,代表需要查询的工作表名称。如果活动工作簿中存在指定名称的工作表,则函数返回结果 True,反之返回 False

第 4 行代码将指定名称的工作表赋值给变量 Sht

第 5 行代码判断是否产生运行时出错,如果第 4 行代码产生错误,则表示工作簿中不存在指定名称的工作表。

如果要判断代码所在的工作簿是否存在指定名称的工作表,将此示例第 4 行代码修改为:

Set Sht = ThisWorkbook.Worksheets(strShtName)

完整示例如下:

Function SheetExist(ByVal strShtName As String) As Boolean
    Dim Sht As Worksheet
    On Error Resume Next
    Set Sht = ThisWorkbook.Worksheets(strShtName)
    If Err.Number = 0 Then SheetExist = True
    Set Sht = Nothing
End Function

使用方法

如下示例代码调用自定义 SheetExist 函数来判断活动工作薄中是否存在名称为“Sheet1”的工作表。

Sub test()
    MsgBox SheetExist("Sheet1")
End Sub

方法二

本示例创建一个自定义函数,使用 For Each...Next 语句遍历工作簿中的所有工作表,比较其工作表的名称是否与指定的名称一致,从而判断代码所在的工作薄中是否存在指定名称的工作表。

Function SheetExist(ByVal strShtName As String) As Boolean
    Dim Sht As Worksheet
    Dim Mysheet As Worksheet
    For Each Mysheet In ThisWorkbook.Worksheets
        If Mysheet.Name = strShtName Then
            SheetExist = True
            Exit For
        Else
            SheetExist = False
        End If
    Next
End Function

评论

您的电子邮件地址不会显示出来。*号为必填项。