ExcelVBA——生成工作表目录
2020年04月16日 16:01 发布来源:Excel学习网
1、函数法:
需要“公式—名称”处在新建名称对话框中引用位置输入公式:
=INDEX(GET.WORKBOOK(1),ROW(A1))&T(NOW())。再利用公式“=IFERROR(HYPERLINK(目录&"!A1",MID(目录,FIND("]",目录)+1,99)),"")”生成目录。
此方法可行,但公式稍难写,一不注意就错了。
2、非函数法:
利用“兼容性报表”生成目录。这种方法虽没有太复杂的公式,但不容易被想到,而且生成的目录带有单元格地址,看起来不像纯正的目录。
今天介绍VBA的方法,只用简单的代码即可生成目录。
无超链接的目录
在代码窗口中输入代码:
Sub 目录()
For x = 2 To Sheets.Count
Cells(x, 1).Value = Sheets(x).Name
Next
End Sub
如下图:
此段代码应用了For-Next循环语句,读取从第2个一直到最后一个工作表,然后将每个工作表的名称依次写入目录工作中的第1列单元格。
插入一个按钮,并指定宏,如下图:
这种方法简单,但是生成的目录没有超链接,不能链接到相应工作表,请看下面的方法,可以实现目录与工作表之间的切换。
有超链接的目录
在代码窗口中输入:
Sub 目录()
Application.ScreenUpdating = False '关闭屏幕更新
Dim i As Integer, sht As Worksheet, shtname As String
Columns(1).ClearContents '清除A列
Cells(1, 1) = "目录" '“部门费用”工作表A1单元格添加数据“目录”
i = 1
For Each sht In Worksheets
shtname = sht.Name
If shtname <> ActiveSheet.Name Then
i = i + 1
ActiveSheet.Hyperlinks.Add anchor:=Cells(i, 1), Address:="",
SubAddress:="'" & shtname & "'!a1", ScreenTip:="超链接到" & sht.Name & "工作表", TextToDisplay:=shtname
'在“部门费用”工作表A列中添加工作表名称
With sht
sht.Hyperlinks.Add anchor:=sht.Cells(1, 10), Address:="", SubAddress:="部门费用!a" & i, ScreenTip:="返回目录", TextToDisplay:="返回目录"
'在每一个不是“部门费用”的工作表JI单元格的中添加“返回目录”按钮
End With
End If
Next
Application.ScreenUpdating = True '开启屏幕更新
End Sub
部分语句太长,直接把代码复制过来观感不好,大家可以把手机横过来,可读性增加一些。
但如果不把代码放在这里,只截图,大家又没办法复制。
看代码截图:
效果如下:
大家可以根据自己处理数据的实际需求选择合适代码建议目录。
原创文章如转载请注明:转载自Excel学习网 [ http://www.excelxx.com/]
需要保留本文链接地址:http://www.excelxx.com/jiqiao/12374.html
需要保留本文链接地址:http://www.excelxx.com/jiqiao/12374.html
相关教程:
经典Excel学习视频及教程推荐:
Excel优秀工具推荐:
小工具推荐: