vba指令碼excel動態建立索引目錄表
阿新 • • 發佈:2019-01-23
上程式碼:
'''動態建立目錄表:其他表內容的索引,從其他表的每行中拷貝指定的列,拷貝後第一個單元格超連結到所拷貝的行 Function makeContent() contentSheetName = "content" '清空content表內容 Sheets(contentSheetName).Select Sheets(contentSheetName).Rows("2:65535").Delete '一張表最多隻能有65535行 '需要從其他表中拷貝的列,如果用例表不同,則修改這個陣列 copyCol = Array(1, 2, 4, 8, 10) '迴圈遍歷除"content"之外的其他表 For Each sh In Worksheets If sh.Name <> contentSheetName Then '從第二行開始拷貝,因為第一行是表頭 For r = 2 To usedRowCnt(sh) If sh.Cells(r, 1).Value <> "" Then '計算“content”表中當前已使用的行數 curTotalRows = usedRowCnt(Sheets(contentSheetName)) '迴圈拷貝每一列的資料 i = 0 For Each col In copyCol i = i + 1 Sheets(contentSheetName).Cells(curTotalRows + 1, i).Value = sh.Cells(r, col).Value Next 'content中的行的第一格單元格設定超連結,連結到所拷貝表的行 Sheets(contentSheetName).Hyperlinks.Add Cells(curTotalRows + 1, 1), Address:="", SubAddress:=sh.Name & "!A" & r End If Next End If Next Debug.Print "make conten success" End Function
如果希望excel檔案每次開啟時更新目錄表,那麼在VB編輯器中,雙擊“ThisWorkBook”,右邊程式碼中寫上如下程式碼:
Private Sub Workbook_Open()
Call makeContent
End Sub
PS:excel表及vba指令碼上傳到csdn了: