當 Excel 工作簿包含多張工作表時,使用者常需來回切換頁面,容易迷失方向。透過 VBA,我們可以建立一個「一鍵目錄」功能,自動在首頁建立工作表清單,並為每張工作表建立超連結,讓使用者快速導覽整份報表。
功能概述
這段 VBA 程式碼可實現以下功能:
- 自動在第一張工作表建立目錄清單
- 為每張工作表建立可點擊的超連結
- 支援動態偵測工作表數量與名稱
- 可重複執行以更新目錄內容
VBA 程式碼範例
Sub CreateSheetIndex()
Dim wsIndex As Worksheet
Dim ws As Worksheet
Dim i As Integer
' 建立或清空目錄工作表(第一張工作表)
Set wsIndex = ThisWorkbook.Sheets(1)
wsIndex.Cells.Clear
wsIndex.Name = "目錄"
' 標題
wsIndex.Range("A1").Value = "工作表目錄"
wsIndex.Range("A1").Font.Bold = True
' 建立超連結清單
i = 2
For Each ws In ThisWorkbook.Sheets
If ws.Name <> wsIndex.Name Then
wsIndex.Hyperlinks.Add Anchor:=wsIndex.Cells(i, 1), _
Address:="", _
SubAddress:="'" & ws.Name & "'!A1", _
TextToDisplay:=ws.Name
i = i + 1
End If
Next ws
MsgBox "目錄與超連結已建立完成", vbInformation
End Sub
程式碼詳細解說(初學者導向)
這段程式碼的目的是在第一張工作表建立一份目錄清單,並為其他工作表建立超連結。以下是逐段說明:首先,我們宣告變數:
wsIndex是目錄工作表(預設為第一張)。ws是用來迴圈處理的每張工作表。i是目錄列數的計數器。
接著使用 Set wsIndex = ThisWorkbook.Sheets(1) 指定第一張工作表為目錄頁,並使用 Cells.Clear 清空原有內容。
設定標題「工作表目錄」並加粗字型。
進入 For Each 迴圈後:
- 逐張檢查工作表,排除目錄頁本身。
- 使用
Hyperlinks.Add方法建立超連結,讓使用者點擊後跳轉至該工作表的 A1 儲存格。 - 每建立一個超連結,就將列數加一,依序往下排列。
最後使用 MsgBox 顯示建立完成的提示訊息。
操作步驟與使用方式
- 將程式碼貼入 Excel 的模組中(例如 Module1)
- 確保第一張工作表為目錄頁(或可自行指定)
- 執行
CreateSheetIndex程式 - 程式會自動建立目錄清單與超連結,方便快速導覽
應用場景與延伸建議
- 多部門報表快速導覽
- 教學範本或作業集快速切換
- 客戶資料或專案進度表集中管理
延伸功能建議:
- 自動加入工作表描述或備註欄
- 加入回到目錄的超連結(每張工作表的 A1)
- 自動排序工作表名稱
- 加入目錄美化格式(框線、顏色、圖示)
常見問題 FAQ
Q1:是否可以指定目錄建立在其他工作表?
可以將 Sheets(1) 改為 Sheets("目錄") 或其他指定名稱。
Q2:是否可以在每張工作表加上「回到目錄」的超連結?
可以在每張工作表的 A1 儲存格加入指向目錄頁的超連結(第九篇會做這個,記得追蹤!)。
Q3:是否可以只列出特定工作表?
可以在迴圈中加入條件,例如只列出名稱包含「報表」的工作表。
結語與延伸閱讀
這段 VBA 程式碼提供了高效率的「一鍵建立目錄與超連結」功能,適合用於多工作表報表導覽、教學範本管理與專案資料整合。後續你可以加入描述欄、回到目錄連結與格式美化模組,打造完整的導覽工具。
下一篇將介紹如何「一鍵建立目錄與回到目錄連結」,敬請期待【VBA 自動化教學】第 9 篇~~











