Private Sub Worksheet_Activate()
Dim sh As Worksheet
Dim a As Integer
Dim R As Integer
R = Sheet1.[A65536].End(xlUp).Row
a = 2
If Sheet1.Cells(2, 1) <> "" Then
Sheet1.Range("A2:A" & R).ClearContents
End If
For Each sh In Worksheets
If sh.CodeName <> "Sheet1" Then
Sheet1.Cells(a, 1).Value = sh.Name
a = a + 1
End If
Next
End Sub
程式碼解析:
工作表的Activate事件,在“目錄”工作表啟用時自動建立工作簿中除“目錄”工作表外所有工作表的目錄。
第2、3、4行程式碼宣告變數型別。
第5行程式碼取得A列最後非空單元格的行號。
第6行程式碼設定變數a的初始值為2,從A2單元格開始建立工作表目錄。
第7行到第9行程式碼判斷是否存在工作表目錄,如果存在先清空原來的目錄,以便更新目錄。
第10行到第15程式碼遍歷工作簿的所有工作表,將除“目錄”工作表外所有工作表的名稱寫入到A列單元格中。
為了建立到各工作表的連結,使用工作表的SelectionChange事件,如下面的程式碼所示。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Integer
R = Sheet1.[A65500].End(xlUp).Row
On Error Resume Next
If Target.Count = 1 Then
If Target.Column = 1 Then
If Target.Row > 1 And Target.Row <= R Then
Sheets(Target.Value).Select
End If
End If
End If
End Sub
程式碼解析:
工作表的SelectionChange事件,當選擇A列工作表目錄中工作表名稱時自動選擇該單元格所對應的工作表。
第5、6、7行程式碼限制該事件觸發的條件。
第8行程式碼選擇單元格所對應的工作表。
“目錄”工作表啟用後自動在A列建立工作簿中除“目錄”工作表以外所有表的目錄,如圖所示。