给EXCEL表快速建立目录
前言
当然这要用到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
把固定引用变成变量,如:
目录地址:selection用cells(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从录制代码开始。