01 工作表

获取工作簿内的多个工作表、并创建"超链接"目录

  Excel_VBA基础的系列篇章里,我们知道内置函数、内置方法的使用("代码调试和优化")。使用它们能避免‘重复写一个相同的计算过程’、且代码变得更有效率、更易维护!

在工作中会遇到这样的一个问题:

  一个工作簿呢有N个工作表(Office03版以前不高于255个),当需要查看某个工作表的内容时,是如何操作的呢?

  • ①拖动着底部的进度条一直到该工作表的位置,
  • ②右键、选择激活的工作表!(如下图)
点击放大的图片
当工作表足够多时,相当麻烦!

  其实完全可以像电子书一样,把工作簿当做一本书、每个工作表当做其中的章节。给它增加一个“目录”,是较为优秀的解决方法!

  可以把第一个工作表设为目录表,把每个工作表的名称在固定列写入,给一个按钮直接跳转到该章节(表),并且可以一键返回。

  工作表本身有一个内置函数HYPERLINK,它解决了"跳转到当前工作簿中的另一个位置"的问题。语法:HYPERLINK(link_location, [friendly_name])

  • Link_location必需。 要打开的文档的路径和文件名。
  • Friendly_name可选。 单元格中显示的跳转文本或数字值

  比如:在Sheets("A1")输入=HYPERLINK("[C:\工作表目录.xlsx]目录!A1","Text"),就会在A1单元格显示一个带有下划线的Text字符串,单击它即跳转到C盘—名为"工作表目录"的工作簿内的—名称是"目录"的工作表的A1单元格。

  对每个工作表和目录页互相用HYPERLINK建立"跳转关系",显得非常的笨拙,它重复、低效、且易错,后期维护起来也更麻烦(当重命名工作表后,跳转链接立刻失效!)

  用VBA代码来做同样的事,一个循环 + 一个内置方法的调用就可完成,既简单、又可无限次复用,再也不担心工作表增减、命名变化的问题!

运行视频:

源码下载:

描述:

  对一个工作簿的多张工作表,建一个目录,支持跳转到目标页和一键返回目录!

样本示例:
点击放大的图片
需求分析:
  • 1、在"目录"表中,有各Sheet工作表名称和跳转链接;
  • 2、在各Sheet工作表中,有跳转链接、一键返回目录。
VBA实现过程:
  • 1.for 循环遍历工作簿内工作表;
  • 2.if 判断,名称非"目录"的工作表,才作为被操作对象;
  • 3.Hyperlinks内置方法调用,.Add方法增加链接;
  • 4.Hyperlinks.Add参数
  • ①Anchor-指定超链接附加到的位置,必要参数;
  • ②Address-指定超链接的目标地址,即用户点击超链接时将要打开的路径或URL,必要参数;
  • ③SubAddress-指定目标文档或工作簿内的特定位置,即跳转到目标文档时所处的位置,可选参数;
  • ④TextToDisplay-指定单元格中显示的可见文本,可选参数;
示例代码
复制成功!
1

Sub 新建工作表超链接目录()
    '----------------------------------------------------
     '自定义各数据类型
    Dim i, j As Integer
    With ThisWorkbook
        For i = 1 To .Sheets.Count          '循环每一个工作表
            If .Sheets(i).Name <> "目录" Then
                j = j + 1
                .Sheets("目录").Cells(j + 3, 1) = .Sheets(i).Name '将工作表写入i行1列
                .Sheets("目录").Hyperlinks.Add Anchor:=.Sheets("目录").Cells(j + 3, 1).Offset(0, 1), Address:="", SubAddress:=.Sheets(i).Name & "!A1", TextToDisplay:="单击跳转"
                .Sheets(i).Hyperlinks.Add Anchor:=.Sheets(i).Cells(1, 1), Address:="", SubAddress:=.Sheets("目录").Name & "!A1", TextToDisplay:="返回目录"
            End If
        Next
    End With
    ThisWorkbook.Save
    MsgBox "建立目录完成"

End Sub

请开发者喝杯咖啡 请开发者喝杯咖啡!