了解录制宏所产生的每句代码的含义,通常有两种方式:逐句执行和查询帮助。
注意:VBA中将一段程序称为过程,Sub语句声明的程序称为子过程,Function语句声明的程序称为函数过程,即自定义函数。
逐句执行
逐句执行代码可以观察代码与操作对象的对应关系,了解每句代码的大致功能。
假设第一句代码是新建工作表,那么执行第一句后工作表界面会多出一个新表,根据此变化可以判断当前语句的功能是添加新表,这给新手学习代码提供了较大的帮助。
以执行“宏2”为例,读懂宏代码的方法如下。
❶将工作表界面和代码窗口界面调整为各占屏幕的二分之一大小,方便自己能同时查看代码和工作表界面的所有可见单元格。图1.10为调整好的界面。
图1.10 并排工作表窗口与代码窗口
❷选择工作表中的E5单元格。
❸激活代码窗口,用鼠标左键单击代码中的任意位置,相当于将“宏2”设置为当前宏。
❹按快捷键【F8】单步执行宏,此时Excel用黄色背景标示“Sub宏2”,表示即将执行该行代码。
❺再次按下【F8】键,Excel将执行“Sub宏2”语句,然后用黄色背景标示第二句(由于注释不属于宏代码,不需要执行,所以执行宏后会忽略)。
❻第三次按下【F8】键,Excel才真正通过宏执行操作,即运行代码中的第一句(忽略Sub和End Sub组成的程序外壳),执行对应的功能。
当第三次按下【F8】键后,可以发现工作表中的活动单元格已经由F5变为E5,这意味着代码“ActiveCell.Offset(0,-1).Range("A1").Select”的功能是选择左边一个单元格。
❼第四次按下【F8】键,可以发现活动单元格E5中产生了字符串“宏与VBA”,这意味着代码“ActiveCell.FormulaR1C1="宏与VBA"”是对活动单元格赋值。
❽第五次按下【F8】键,可以发现活动单元格中的字符产生了加粗效果,这意味着代码“Selection.Font.Bold=True”能对单元格的字符加粗……
按以上方式逐句执行代码,可以根据工作表的变化了解代码的含义。
然而,有时执行某些语句时可能会看不到任何改变,所以此方法不能确保用户每次都准确地猜出代码的含义。例如代码“Strikethrough=False”的含义是去除单元格的删除线,当单元格的字符本就不存在删除线时,屏幕上将不会有任何反应,那么也无法通过目测屏幕变化来猜测代码的含义。所以VBA提供了第二种协助用户读懂宏代码的方法——查询帮助。