内事不决问百度,外事不决问谷歌,工作难题就问DeepSeek。
如下图,当前文档中有多个工作表,今天咱们就让DeepSeek来创建带链接的工作表目录。
Excel文档中有多个工作表,希望生成带超链接的目录,请提供一段VBA代码,并对代码进行注释,同时说明代码的使用方法。
思索片刻,
deepseek就给出了解决方法:
Sub CreateTableOfContents()
' 定义变量
Dim ws As Worksheet ' 用于循环遍历工作簿中的每个工作表
Dim tocSheet As Worksheet ' 用于引用目录工作表
Dim rowIndex As Integer ' 用于跟踪目录中的行号
' 设置目录工作表和初始行号
Set tocSheet = ThisWorkbook.Sheets(1) ' 假设目录放在第一个工作表
rowIndex = 1 ' 从第一行开始
' 清除目录工作表中的所有内容
tocSheet.Cells.Clear
' 添加目录标题
tocSheet.Cells(rowIndex, 1).Value = "目录"
tocSheet.Cells(rowIndex, 1).Font.Bold = True
rowIndex = rowIndex + 1
' 循环遍历工作簿中的每个工作表
For Each ws In ThisWorkbook.Sheets
' 跳过目录工作表本身
If ws.Name <> tocSheet.Name Then
' 在工作表中添加工作表名称和超链接
tocSheet.Cells(rowIndex, 1).Value = ws.Name
tocSheet.Hyperlinks.Add Anchor:=tocSheet.Cells(rowIndex, 1), _
Address:="", _
SubAddress:="'" & ws.Name & "'!A1", _
TextToDisplay:=ws.Name
rowIndex = rowIndex + 1
End If
Next ws
' 调整目录工作表的列宽
tocSheet.Columns("A:A").AutoFit
' 提示用户目录已生成
MsgBox "目录已生成在第一个工作表中!", vbInformation
End Sub
同时给出了详细的代码说明:
-
-
Set tocSheet = ThisWorkbook.Sheets(1)
:假设目录放在第一个工作表中。
-
rowIndex = 1
:从第一行开始添加目录。
-
tocSheet.Cells.Clear
:清除目录工作表中的所有内容,以便生成新的目录。
添加目录标题
:
-
tocSheet.Cells(rowIndex, 1).Value = "目录"
:在第一行添加“目录”标题。
-
tocSheet.Cells(rowIndex, 1).Font.Bold = True
:将标题加粗。
-
rowIndex = rowIndex + 1
:行号加1,准备添加工作表名称。
循环遍历工作簿中的每个工作表
:
-
For Each ws In ThisWorkbook.Sheets
:循环遍历工作簿中的每个工作表。
-
If ws.Name <> tocSheet.Name Then
:跳过目录工作表本身。
-
tocSheet.Cells(rowIndex, 1).Value = ws.Name
:在工作表中添加工作表名称。
-
tocSheet.Hyperlinks.Add
:为每个工作表名称添加超链接,点击后跳转到对应工作表的A1单元格。
-
rowIndex = rowIndex + 1
:行号加1,准备添加下一个工作表名称。
调整目录工作表的列宽
:
提示用户目录已生成
: