工作薄中的所有表,包括工作表、宏表和图表等的名称是唯一的。如果要判断工作簿中是否存在指定名称的工作表,可以用以下几种方法:
方法一
本示例使用自定义函数判断活动工作簿中是否存在指定名称的工作表。
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