分享

给EXCEL表快速建立目录

 EXCEL分享 2020-11-13


 前言

当然这要用到VBA,有人问VBA是不是很难,其实难的是我们不知道EXCEL的内部运行机理,如果知道了EXCEL内部是如何运行的,再稍微懂一点循环的语句和编程的思维,就容易多了。

好在EXCEL有录制宏的功能,下面老崔就带大家体验一下学习VBA的过程。

1第一步:录制宏

我不会VBA,但我可以手动插入连接,此时你不妨把你的操作过程用宏录制的功能记录下来。

步骤:

开发工具-录制宏-确定,宏默认保存在当前工作簿中

选中目录工作表,选择A1单元格,插入-超连接-本文档中的位置-选择单元格引用的工作表和地址-确定。


这样就建立了第一个链接,如下图:

点击停止录制按钮,停止宏的录制过程!

ALT+F11打开VBA编辑器,打开当前工作簿的模块1,代码如下:

Sub 1()

'

' 1

'

   ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="",SubAddress:= _

       "函数!A1", TextToDisplay:="函数!A1"

End Sub

2第二步:分析代码

核心代码只有一句,通过分析,我们基本了解了超连接的方法和属性,如下图所示:

3第三步:改进代码

单纯的录制是没有意义的,我们就是要通过录制,发现EXCEL内部是如何运行的,他的代码是如何组织的?然后改进它,为我们服务!

增加循环语句,使目标工作表在所有工作表中循环一遍,包括目录工作表!

For each sh in worksheets

……

Next

增加判断语句,如果工作表名称不等于目录,则执行程序代码,否则跳过。

If sh.Name <> "目录" Then

……

i=i+1

End If

把固定引用变成变量,如:

目录地址:selectioncells(i,1)表示,通过i的递增实现目录单元格下移

目标地址:“函数!A1” 用 sh.name&"!A1" 表示,在不同的工作表中循环引用

显示文本:“函数!A1”用:"" &i & ":" & sh.Name 表示

所有代码: 

Sub 目录()

Dim i As Integer

Dim sh As Worksheet

i = 1

For Each sh In Worksheets

   If sh.Name <> "目录" Then

        Worksheets("目录").Hyperlinks.Add Anchor:=Cells(i, 1), Address:="",SubAddress:= _

        sh.Name & "!a1", TextToDisplay:="" &i & ":" & sh.Name

        i = i + 1

   End If

Next

End Sub

4第四步:调试运行程序

鼠标放在代码中的任意位置,按F8单步运行,按F5 运行整个过程。结果如下:

 总结

学习VBA从录制代码开始。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多