当工作簿中的工作表不多时,我们只需要单击底部的工作表名到达想要操作的工作表。然而,当有很多工作表时,要找到想要的工作表就需要边单击滚动按钮边查找工作表,这可能要花点时间了。
其实,我们可以创建一个导航工作表,将工作簿中的所有工作表名称都放置到导航工作表中,并设置到工作表的链接,这样,我们只需要单击工作表名称,即可到达相对应的工作表。同时,在每个工作表中,放置回到导航工作表的链接,这样单击该链接就可以迅速回到导航工作表。这样更方便快捷,如下图1所示。
图
实现上述功能的VBA代码如下:
Sub NavigateWorksheet()
Dim wks As Worksheet
Dim i As Integer
i = 0
'如果存在"导航"工作表,则清除其内容
'如果不存在"导航"工作表,则添加
If SheetExists("导航") Then
Cells.ClearContents
Worksheets("导航").Range("A1").Select
Else
Worksheets.Add before:=Worksheets(1)
ActiveSheet.Name = "导航"
End If
'遍历工作表
For Each wks In Worksheets
i = i 1
'排除"导航"工作表
If i = 1 Then GoTo Continue
'添加导航链接
With ActiveCell
.Value = wks.Name
.Hyperlinks.Add ActiveCell,"", _
wks.Name & "!A1", _
TextToDisplay:=wks.Name, _
ScreenTip:="单击返回导航工作表"
With Worksheets(i)
.Range("A1").Value ="返回到工作表: " & ActiveSheet.Name
.Hyperlinks.AddSheets(wks.Name).Range("A1"), "", _
"'" &ActiveSheet.Name & "'" & "!" &ActiveCell.Address, _
ScreenTip:="返回到工作表:" & ActiveSheet.Name
End With
End With
ActiveCell.Offset(1, 0).Select
Continue:
Next wks
End Sub
'判断工作表是否存在
Function SheetExists(strName) As Boolean
Dim obj As Object
On Error Resume Next
Set obj = ActiveWorkbook.Sheets(strName)
If Err.Number = 0 Then
SheetExists = True
Else
SheetExists = False
End If
End Function
运行NavigateWorksheet过程,将在工作簿中创建一个名为“导航”的工作表(如果该工作表已存在,则清空其中的内容),然后在“导航”工作表的列A中输入该工作簿其他工作表的名称并建立到该工作表的链接,同时在其他工作表的单元格A1中创建返回“导航”工作表的链接。