EXCEL:用VBA获取所有工作表名称并加上超链接
1、如下图示例中效果,工作表列表放置在B列中,工作表的增加、减少,该列表会自动更新。
2、在工作簿的“SheetActivate”事件中放置VBA语句,即可实现上述目标。
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim shtIndex As Worksheet
If ActiveSheet.Name = "Sheet1" Then '判断只有激活了总索引表才更新目录
Set shtIndex = ThisWorkbook.Sheets("sheet1") '为方便之后调用,定义索引表名
For i = 1 To ThisWorkbook.Worksheets.Count ''遍历所有工作表
shtIndex.Cells(i, 2).Select '选中第二列的单元格
With Selection:
.Value = ThisWorkbook.Worksheets(i).Name '选中的单元格赋予工作表名称
'在单元格中加上超链,链接到目标工作表的A1单元格
.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=shtIndex.Cells(i, 2).Value & "!A1", TextToDisplay:=shtIndex.Cells(i, 2).Value
End With
Next '结束循环
End If
End Sub
解析:
1、Workbook_SheetActivate事件,只要工作簿的任一工作表被选择,都会触发该事件。从而可以有效监控工作的名称修改、顺序调整等。
2、遍历所有工作表,确保不漏不丢:
For i = 1 To ThisWorkbook.Worksheets.Count
3、.Hyperlinks.Add Anchor链接到指定的工作表
4、shtIndex.Cells(i, 2).Select工作表列表存放位置,可根据需要修改