Excel實戰技巧54: 創建導航工作表

  • 2019 年 10 月 7 日
  • 筆記

當工作簿中的工作表不多時,我們只需要單擊底部的工作表名到達想要操作的工作表。然而,當有很多工作表時,要找到想要的工作表就需要邊單擊滾動按鈕邊查找工作表,這可能要花點時間了。

其實,我們可以創建一個導航工作表,將工作簿中的所有工作表名稱都放置到導航工作表中,並設置到工作表的鏈接,這樣,我們只需要單擊工作表名稱,即可到達相對應的工作表。同時,在每個工作表中,放置回到導航工作表的鏈接,這樣單擊該鏈接就可以迅速回到導航工作表。這樣更方便快捷,如下圖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中創建返回「導航」工作表的鏈接。

程式碼的圖片版如下: