在前一篇文章中分享了制作工作表目录的源码过程。 其中有个判断当前工作簿中是否存在指定名称的工作表代码片段。 本篇中将介绍几种使用VBA代码来判断工作表是否存在的方法。有关Excel VBA编程,可参考使用《神奇的VBA》插件。

假设我们想判断工作簿中是否有名称为“东门子订单数据”的工作表。

第一种方法: 使用VBA遍历循环的方法

Sub 判断工作表是否存在_方法2() Dim d As Object Set d = CreateObject("Scripting.Dictionary") Dim sht As Worksheet For Each sht In Worksheets d(sht.Name) = "" Next If d.exists("东门子订单数据") Then MsgBox "存在" Else MsgBox "不存在" End If End Sub

该方法中综合运用了,For Each遍历循环语句和 Exist Sub语句来返回是否存在的结果。 这种方法VBA初学者最开始会选用这种思路。不过对于初学者而言,务必注意在循环语句中加入Exist Sub,否则将永远显示不存在。

第2中方法: VBA 字典方法

Sub 判断工作表是否存在_方法2() Dim d As Object Set d = CreateObject("Scripting.Dictionary") Dim sht As Worksheet For Each sht In Worksheets d(sht.Name) = "" Next If d.exists("东门子订单数据") Then MsgBox "存在" Else MsgBox "不存在" End If End Sub

第3种方法: 巧妙运用On Error...错误语句方法来判断是否存在。

Sub 判断工作表是否存在_方法3() Dim sht As Worksheet On Error Resume Next Set sht = Worksheets("东门子订单数据") If Not sht Is Nothing Then MsgBox "存在" Else MsgBox "不存在" End If Set sht = Nothing End Sub

我们也可以将平时职场VBA编程中高频重复的代码片段写成通用函数,以便其它VBA程序调用。以第一种方法为例。 我们改造写成如下Function函数代码形式:

我们将函数名随便起了个名字叫IsSheetExisted,函数只有一个字符串型参数tabname代表以后要传入的工作表标签名称,函数返回Boolean类型结果(True/False)。下面,我们就可以在其它VBA程序中使用该函数了,见下面代码:

Sub 判断工作表是否存在() MsgBox IIf(IsSheetExisted(""), "存在", "不存在") End Sub

我们也可是在单元格区域中使用上面的IsSheetExisted函数。

暂时就简单介绍到这里!上面源码复制下来,自己试一下吧。可下载优秀职场人必备的工具《神奇的VBA》插件,一款嵌入进Excel软件窗口功能区界面的应用,打开任意Excel工作簿就能随时参考查阅学习VBA编程的Excel 插件。