大家好,我們今日繼續講解VBA代碼解決方案的第58講內容:在VBA中查找指定工作表的方法。在上一個例子中,我們通過一個自定義函數解決了刪除工作表的方法。其實實現目的的方法有很多種,不必要必須有某種辦法,但是寫程序的人,比如我,有著很大的惰性,或者說是偏愛某一種方法,比如,我特別喜歡用LEFT和RIGHT來進行左右的截取操作,雖然很多的時候用MID會更簡單些,唉,真的沒辦法。在完成某項目的也是如此,如果不是用自定義函數,只是用遍歷工作表的方法也可以實現的。今天的例子也是如此。所以有的朋友自認為自己有更好的方法,其實,有些時你是對的,或者說是對的,但對於做程序的人來說不一定會採用你認為好的方法,就這麼簡單。
今天我們講查找某個工作表的方法,在實際的應用中往往要先查到某個工作表,然後再進行操作控制。判斷工作簿中是否存在指定名稱的工作表,當然可以使用遍歷工作簿中所有工作表的方法外,單今天我仍要自定義函數的方法。
Function MyExistSh(Sh As String) As Boolean
Dim Sht As Object
On Error Resume Next
Set Sht = Sheets(Sh)
If Err.Number = 0 Then MyExistSh = True
Set Sht = Nothing
End Function
代碼解析:
自定義MyExistSh函數包含一個String類型的參數,代表需要判斷的工作表名稱。如果該工作表存在,則返回True。
第5行代碼判斷前面的代碼是否出錯,如果前面的代碼存在錯誤,則表示不存在指定名稱的表。
使用自定義ExistSheet函數判斷工作簿中是否存在指定名稱的工作表,如下面的代碼所示。
Sub MyNotSht()
Dim Sh As String
Sh = InputBox("請輸入查找的工作表名稱:")
If Len(Sh) > 0 Then
If Not MyExistSh(Sh) Then
MsgBox "對不起,您查找的" & Sh & "工作表不存在!"
Else
Sheets(Sh).Select
End If
End If
End Sub
代碼解析:
MyNotSht過程使用自定義的ExistSh函數判斷工作簿中是否存在指定名稱的工作表,如果不存在則使用消息框進行提示.
下面看代碼的實測,代碼窗口截圖:
代碼的運行:
當錄入kk後點擊確認,頁面的ACTIVESHEET會轉到KK的工作表。
今日內容回向:
1 查找工作表的思路是怎麼樣的?
2 上述代碼中If Err.Number = 0 Then MyExistSh = True是什麼意思?