02.11 神奇的Excel VBA系列之:如何判斷某工作表是否存在

在前一篇文章中分享了製作工作表目錄的源碼過程。 其中有個判斷當前工作簿中是否存在指定名稱的工作表代碼片段。 本篇中將介紹幾種使用VBA代碼來判斷工作表是否存在的方法。有關Excel VBA編程,可參考使用《神奇的VBA》插件。

神奇的Excel VBA系列之:如何判斷某工作表是否存在

假設我們想判斷工作簿中是否有名稱為“東門子訂單數據”的工作表。

第一種方法: 使用VBA遍歷循環的方法

神奇的Excel VBA系列之:如何判斷某工作表是否存在

<code>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/<code>

該方法中綜合運用了,For Each遍歷循環語句和 Exist Sub語句來返回是否存在的結果。 這種方法VBA初學者最開始會選用這種思路。不過對於初學者而言,務必注意在循環語句中加入Exist Sub,否則將永遠顯示不存在。

第2中方法: VBA 字典方法

神奇的Excel VBA系列之:如何判斷某工作表是否存在

<code>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/<code>

第3種方法: 巧妙運用On Error...錯誤語句方法來判斷是否存在。

神奇的Excel VBA系列之:如何判斷某工作表是否存在

<code>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/<code>

我們也可以將平時職場VBA編程中高頻重複的代碼片段寫成通用函數,以便其它VBA程序調用。以第一種方法為例。 我們改造寫成如下Function函數代碼形式:

神奇的Excel VBA系列之:如何判斷某工作表是否存在

<code>

我們將函數名隨便起了個名字叫IsSheetExisted,函數只有一個字符串型參數tabname代表以後要傳入的工作表標籤名稱,函數返回Boolean類型結果(True/False)。下面,我們就可以在其它VBA程序中使用該函數了,見下面代碼:

<code>Sub 判斷工作表是否存在()
MsgBox IIf(IsSheetExisted(""), "存在", "不存在")
End Sub/<code>

我們也可是在單元格區域中使用上面的IsSheetExisted函數。

暫時就簡單介紹到這裡!上面源碼複製下來,自己試一下吧。可下載優秀職場人必備的工具《神奇的VBA》插件,一款嵌入進Excel軟件窗口功能區界面的應用,打開任意Excel工作簿就能隨時參考查閱學習VBA編程的Excel 插件。

神奇的Excel VBA系列之:如何判斷某工作表是否存在

神奇的Excel VBA系列之:如何判斷某工作表是否存在


分享到:


相關文章: