大家好,我们今日继续讲解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是什么意思?