《快速判断工作簿中是否存在指定工作表》介绍了两种方法实现判断工作表是否存在与工作簿中,最近发现有更简单的方法实现,在这里和大家分享一下。
示例代码如下。
Function blnSheetExist(ByVal strSht As String) As Boolean
blnSheetExist = (TypeName(Application.Evaluate(strSht & "!A1")) = "Range")
End Function
Sub Demo()
Dim aSht
aSht = Array("Sheet1", "Sheet2")
For Each sSht In aSht
Debug.Print sSht & " exist - " & blnSheetExist(sSht)
Next
End Sub
【代码解析】
核心代码只有一行,也就是第2行代码,Evalate
方法用于将名称转换一个对象或者值,其中strSht & "!A1"
为A1样式引用。
TypeName
函数用于返回变量的类型,如果工作簿中存在名称为strSht
的工作表,那么函数返回值为Range
,如果工作表表不存在,那么返回值为Error
。
这样单行代码就可以轻松实现判断工作表是否存在的自定义函数。
运行Demo
过程结果如下。