概述
开发VBA代码时,经常需要操作工作表对象,但是这个是否存在呢?各种奇葩的用户都会有,所以在代码中一定要先判断然后再进行后续操作,非常可惜的是VBA中并没有提供直接的方法来完成这个判断,只有写一个自定义函数了。
Function udfSheetExists(strShtName As String, Optional strWbName As String) As Boolean
On Error Resume Next
If strWbName = "" Then
Set objWb = ActiveWorkbook
Else
Set objWb = Workbooks(strWbName)
End If
udfSheetExists = CBool(Not objWb.Sheets(strShtName) Is Nothing)
On Error GoTo 0
End Function
代码非常简单,函数有两个参数:
参数名称 | 含义 | 说明 |
---|---|---|
strShtName | 指定工作表名称 | 必选 |
strWbName | 指定工作簿名称 | 可选 |
调用函数时,如果没有提供参数strWbName
,将使用活动工作簿做为目标工作簿。objWb.Sheets(strShtName) Is Nothing
判断工作表是否存在,既然这句代码就可以判断工作表是否存在,为啥还要写这么多代码的一个自定义函数呢?如果工作表不存在,那么objWb.Sheets(strShtName)
将产生运行时错误9(下标越界),这也是代码中需要使用On Error Resume Next
忽略系统错误的原因。
演示代码如下:
Sub Demo()
Debug.Print udfSheetExists("Sheet1")
Debug.Print udfSheetExists("Sheet1", "MyData.xlsx")
End Sub
Debug.Print udfSheetExists("Sheet1")
省略第二个参数,相当于检查活动工作簿中是否存在名称为Sheet1的工作表。
自定义函数中,并没有检查名称为strWbName的工作簿是否存在,有兴趣的读者可以自行补充。
最后
以上就是俊秀纸飞机为你收集整理的如何判断工作簿中是否存在某个工作表的全部内容,希望文章能够帮你解决如何判断工作簿中是否存在某个工作表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复