前言当然这要用到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从录制代码开始。 |
|