在前一篇文章中分享了製作工作表目錄的源碼過程。 其中有個判斷當前工作簿中是否存在指定名稱的工作表代碼片段。 本篇中將介紹幾種使用VBA代碼來判斷工作表是否存在的方法。有關Excel VBA編程,可參考使用《神奇的VBA》插件。
假設我們想判斷工作簿中是否有名稱為「東門子訂單數據」的工作表。
第一種方法: 使用VBA遍歷循環的方法
Sub 判斷工作表是否存在_方法2()Dim d As ObjectSet d = CreateObject(&34;)Dim sht As WorksheetFor Each sht In Worksheets d(sht.Name) = &34;NextIf d.exists(&34;) Then MsgBox &34;Else MsgBox &34;End IfEnd Sub
該方法中綜合運用了,For Each遍歷循環語句和 Exist Sub語句來返回是否存在的結果。 這種方法VBA初學者最開始會選用這種思路。不過對於初學者而言,務必注意在循環語句中加入Exist Sub,否則將永遠顯示不存在。
第2中方法: VBA 字典方法
Sub 判斷工作表是否存在_方法2()Dim d As ObjectSet d = CreateObject(&34;)Dim sht As WorksheetFor Each sht In Worksheets d(sht.Name) = &34;NextIf d.exists(&34;) Then MsgBox &34;Else MsgBox &34;End IfEnd Sub
第3種方法: 巧妙運用On Error...錯誤語句方法來判斷是否存在。
Sub 判斷工作表是否存在_方法3()Dim sht As WorksheetOn Error Resume NextSet sht = Worksheets(&34;)If Not sht Is Nothing Then MsgBox &34;Else MsgBox &34;End IfSet sht = NothingEnd Sub
我們也可以將平時職場VBA編程中高頻重複的代碼片段寫成通用函數,以便其它VBA程序調用。以第一種方法為例。 我們改造寫成如下Function函數代碼形式:
我們將函數名隨便起了個名字叫IsSheetExisted,函數只有一個字符串型參數tabname代表以後要傳入的工作表標籤名稱,函數返回Boolean類型結果(True/False)。下面,我們就可以在其它VBA程序中使用該函數了,見下面代碼:
Sub 判斷工作表是否存在()MsgBox IIf(IsSheetExisted(&34;), &34;, &34;)End Sub
我們也可是在單元格區域中使用上面的IsSheetExisted函數。
暫時就簡單介紹到這裡!上面源碼複製下來,自己試一下吧。可下載優秀職場人必備的工具《神奇的VBA》插件,一款嵌入進Excel軟體窗口功能區界面的應用,打開任意Excel工作簿就能隨時參考查閱學習VBA編程的Excel 插件。