在前一篇文章中分享了制作工作表目录的源码过程。 其中有个判断当前工作簿中是否存在指定名称的工作表代码片段。 本篇中将介绍几种使用VBA代码来判断工作表是否存在的方法。有关Excel VBA编程,可参考使用《神奇的VBA》插件。
假设我们想判断工作簿中是否有名称为“东门子订单数据”的工作表。
第一种方法: 使用VBA遍历循环的方法
Sub 判断工作表是否存在_方法2()Dim d As ObjectSet d = CreateObject("Scripting.Dictionary")Dim sht As WorksheetFor Each sht In Worksheets d(sht.Name) = ""NextIf d.exists("东门子订单数据") Then MsgBox "存在"Else MsgBox "不存在"End IfEnd Sub
该方法中综合运用了,For Each遍历循环语句和 Exist Sub语句来返回是否存在的结果。 这种方法VBA初学者最开始会选用这种思路。不过对于初学者而言,务必注意在循环语句中加入Exist Sub,否则将永远显示不存在。
第2中方法: VBA 字典方法
Sub 判断工作表是否存在_方法2()Dim d As ObjectSet d = CreateObject("Scripting.Dictionary")Dim sht As WorksheetFor Each sht In Worksheets d(sht.Name) = ""NextIf d.exists("东门子订单数据") Then MsgBox "存在"Else MsgBox "不存在"End IfEnd Sub
第3种方法: 巧妙运用On Error...错误语句方法来判断是否存在。
Sub 判断工作表是否存在_方法3()Dim sht As WorksheetOn Error Resume NextSet sht = Worksheets("东门子订单数据")If Not sht Is Nothing Then MsgBox "存在"Else MsgBox "不存在"End IfSet sht = NothingEnd Sub
我们也可以将平时职场VBA编程中高频重复的代码片段写成通用函数,以便其它VBA程序调用。以第一种方法为例。 我们改造写成如下Function函数代码形式:
我们将函数名随便起了个名字叫IsSheetExisted,函数只有一个字符串型参数tabname代表以后要传入的工作表标签名称,函数返回Boolean类型结果(True/False)。下面,我们就可以在其它VBA程序中使用该函数了,见下面代码:
Sub 判断工作表是否存在()MsgBox IIf(IsSheetExisted(""), "存在", "不存在")End Sub
我们也可是在单元格区域中使用上面的IsSheetExisted函数。
暂时就简单介绍到这里!上面源码复制下来,自己试一下吧。可下载优秀职场人必备的工具《神奇的VBA》插件,一款嵌入进Excel软件窗口功能区界面的应用,打开任意Excel工作簿就能随时参考查阅学习VBA编程的Excel 插件。