![Excel VBA程序开发自学宝典](https://wfqqreader-1252317822.image.myqcloud.com/cover/949/653949/b_653949.jpg)
2.4 使用VBA帮助
Excel的VBA具有详尽地帮助供用户学习、参考。通过帮助可以使用户学得更快,对对象、属性、方法等功能也掌握更准确。
2.4.1 利用帮助学习VBA语法
VBA有三种帮助:即时提示、本地帮助和在线帮助。
1.即时提示
即时提示是指用户录入代码时,VBA弹出的选项,也称快速信息。它可以对属性、对象、方法和参数等进行提示,使用户可以快速而准确地录入代码。例如需要输入获取单元格地址的代码,但又无法确定记忆中的单词是否正确,就可以借用提示来完成。通过快速信息录入代码不仅快速,而且绝对正确。具体步骤如下:
01 录入代码“Range ("A1")”;
02 继续录入一个半角状态下的小数点,程序弹出即时信息——下拉列表,其中“Address”即表示区域的地址,如图2.7所示;
03 按下键盘上的下箭头,移动到“Address”处再按下Tab键,完整的单词即自动追加到代码中。如果手工录入,可能会录入为诸如“Adress”或者“Addrees”等等错误代码。
如果在代码中录入函数,及左括号时,仍然会产生即时帮助信息提示。不过不是下拉列表,而是所有参数的提示,及每个参数的类型,如图2.8所示。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0022_0004.jpg?sign=1738810850-p9w6G9e6BqUNL0KwEV88Ho9KEf3u2WoR-0-6991fbbb3b3f1f267dfef725f08dc115)
图2.7 即时帮助之属性提示
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0022_0005.jpg?sign=1738810850-eH252LO8A61QyZNA803EVdzMvl7CqTIc-0-9d72e768e26b29f55646787d66f7f443)
图2.8 即时帮助之参数提示
2.本地帮助
本地帮助是指安装Office时安装的帮助文件,存放在本地磁盘中。
调用本地帮助的步骤如下:
01 打开Excel 2007,利用快捷键【Alt+F11】打开VBA编辑器;
02 按下快捷键【F1】打开VBA帮助窗口。窗口的标题是Excel帮助,与在工作表中按下【F1】键调出的帮助窗口标题一致,然而其功能却大大不同;
03 在帮助窗口右下角可以看到“脱机”二字,表示当前调用的帮助信息是本地帮助。在左上角的文字框中输入待了解的信息“names”,并单击回车键或者左键单击“搜索”按钮,立即出现关于“names”的所有帮助信息,包括“names”的对象、方法、属性和实例。从窗口中可以看出关于“names”的帮助有30条,本页仅显示1到25条;
04 单击第三项“Workbook.Names”,窗口中立即出现工作簿级名称集合的相关帮助信息,包括语法、说明和示例,如图2.10所示;
05 如果需查看关于“names”的其他帮助,则单击工具栏的 图标返回,再从列表中选择目标帮助信息,也可以单击“下一页”按钮查看其他帮助。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0023_0003.jpg?sign=1738810850-XXn3MLmViZnZdcPtdRNJgrjfgjVjudD7-0-c189991f37bb3e71ac75487cb0fa9793)
图2.9 调用names的本地帮助
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0023_0004.jpg?sign=1738810850-cP96zAAao321CMdvMJLfSpfa3yGTgJ4A-0-6bea16aebf7cc99bcbef4a3cd9d73d85)
图2.10 Workbook.Names的帮助
3.在线帮助
在线帮助是指来自网络的在线信息。单击帮助窗口右下角的“脱机”,将弹出“连接状态”提示框,如图2.11所示。从中选择“显示来自Office Online的内容”即可调用在线帮助。
在图2.12中显示了关于“names”的在线帮助。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0023_0005.jpg?sign=1738810850-mX4gT9U2LNch64DorZNeGHr8NOEnbTHs-0-7b534eb2beb3ddd12a48de8a1b0ae9ef)
图2.11 调整为显示在线帮助
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0023_0006.jpg?sign=1738810850-r6Glf3UbeLaYOht2UDbm1UAPz0kJ3Su2-0-55886c7d171aefba13b9b489163d2ceb)
图2.12 显示关于names的在线帮助
当然,除了上述三种帮助外,还可以到国内外的Office论坛获取专家们的在线指导。例如Excelhome论坛(http://club.excelhome.net)、Officefans论坛(http://www.officefans.net/cdb/index.php)或者太平洋软件论坛Office专区(http://softbbs.pconline.com.cn/f251.html)等。
2.4.2 捕捉错误
VBA对代码出错时具有良好的捕捉功能,可以提示用户代码有误,甚至给出错误类型、突出标示错误语句,对于部分错误还会提示或者定位于出错的代码上,使用户可以及时更正。
错误捕捉体现在编译错误和运行时错误两方面。
1.编译错误
编译错误指在VBA内部无法编译代码时产生的错误,大部分在编写代码时就能出现编译错误的提示,而不需要等到执行代码。
产生编译错误时,VBA会进行提示,让用户对有误的代码做修正。现列举四个编译错误,其中红色代码表示出错的语句。
(1)按下快捷键【Alt+F11】进入VBE窗口,单击菜单【插入】\【模块】,然后在模块代码窗口中输入以下代码“Sub 11()”,当敲下回车键后,VBA会弹出一个错误提示,如图2.13所示。该错误是使用了不正确的标识符作为宏名称引起的,宏名称不以数字开头。
(2)在模块代码窗口中输入代码“Sub我的宏()”,然后回车,程序会自动将Sub程序的外壳补充完整,成为:
Sub 我的宏() End Sub
然后在中间录入以下语句:
IF [a1]=10
当敲下回车键后,立即弹出图2.14所示错误提示,它表示IF语句未录入完整。完整的代码应是IF…Then…或是If...GoTo...,不是仅仅有IF而忽略Then。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0024_0001.jpg?sign=1738810850-mStbdes5afGP3qkVfBo0ylT59qQsJgIM-0-9c2c1bf90369d45abac466632e14fb53)
图2.13 错误提示1
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0024_0002.jpg?sign=1738810850-98ofDAKsdry4CBIkyubiFi2jxBSgRjjg-0-5211793668e51cc137d848e9b1c3ec61)
图2.14 错误提示2
(3)将前面代码中的修改“if [a1]=10”修改为“Range(“a1”)=10”,当敲下回车键后立即弹出如图2.15所示的错误提示。该提示表示代码中使用了无效字符,其中无效字符指的是全角双引号,Range的参数只能使用半角双引号。
(4)将前面代码中的修改“Range(“a1”)=10”修改为“Mid([a1])=1”,当敲下回车键后立即弹出如图2.16所示的错误提示。该提示表示Mid函数的参数不全,也就是缺少逗号分隔符“, ”。在[a1]后面加两个逗号就可以消除错误。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0024_0003.jpg?sign=1738810850-HXwnSHEqiUmAjKz1QNFdptSWBcKTGZGY-0-270683687c3d5a1163c3f600a9dfd417)
图2.15 错误提示3
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0024_0004.jpg?sign=1738810850-7MbHWyDe6hw77PUkQDHDuo8QFk7tPHiy-0-cb47f68475f99cc24e13259af5ad7089)
图2.16 错误提示4
2.运行时错误
运行时错误是指代码编写时无法判断,在执行程序时才出现的错误。下面举四例运行时错误。
(1)在模块代码窗口录入以下代码,表示获取第11个工作表的表名:
Sub 取表名() MsgBox Sheets(11).Name End Sub
如果当前工作簿中工作表数量不足11个,那么按下【F5】键执行程序时,将产生图2.17所示的错误提示。其中下标越界表示引用了不存在的对象,工作表仅三个时引用第11个就会越界。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0025_0001.jpg?sign=1738810850-AICagshrE9rnEhfb2BWtoPSFp2eaRkEs-0-01e03b37bc27879d858853ed1bc9312f)
图2.17 运行时错误1
(2)在模块代码窗口录入以下代码,表示给Z2048576单元格填充红色背景。
Sub 填充红色() Range("Z2048576").Interior.ColorIndex = 3 End Sub
录完代码后,按下【F5】键执行程序,立即弹出图2.18所示错误提示。因为Excel 2007最多1048576行,不存在Z2048576这个单元格,所以对该单元格进行任何操作都会失败。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0025_0002.jpg?sign=1738810850-AQtr9kjdmqJu0Ol7Jrar4khUdBMCvvrK-0-624481dc3ac1730bf901737ec8266cba)
图2.18 运行时错误2
(3)在模块代码窗口录入以下代码,用于将当前表数据区域的字体大小修改420磅。
Sub 设置字体大小() ActiveSheet.UsedRange.Font.Size = 420 End Sub
录完代码后,按下【F5】键执行程序,立即弹出图2.19所示错误提示。因为字号只支持1到409之间,而代码中的420已经超过Excel的允许范围,所以报错。
(4)在模块代码窗口录入以下代码,用于统计A列数字个数。
Sub 计算A列数字个数() Dim i As Byte i = WorksheetFunction.Count(Range("A:A")) MsgBox "A列数字个数为:" & i End Sub
录完代码后,按下【F5】键执行程序,如果A列有1000个数字,那么会立即弹出图2.20所示错误提示。代码中变量i为byte类型,那么它只能表示0到255之间的数值,当A列数字个数超过255个时就会产生错误提示。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0026_0001.jpg?sign=1738810850-4hnt38VR8eC6vjHbY5eGXGOxGqK198p9-0-241652cf3198b23cb33713d611c568d6)
图2.19 运行时错误3
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0026_0002.jpg?sign=1738810850-fB4nbxsokou1ph2LJCG6dsXde6b32Dbt-0-d84f14d7734ab337aceff32594e30144)
图2.20 运行时错误4
根据以上分析,Excel VBA有着完善的错误捕捉功能,用户的代码不管在运行前还是运行后产生错误,都可以通过错误提示帮助用户获取错误信息。不仅知道代码中存在错误,而且可以明确地看到错在哪一句代码。例如在“计算A列数字个数”这段代码中,当产生错误提示框时,单击“调试”按钮,程序会将出错的代码行黄色显示,且在其左方用箭头标示,如图2.21所示。
![](https://epubservercos.yuewen.com/F78760/3591139303616801/epubprivate/OEBPS/Images/figure_0026_0003.jpg?sign=1738810850-rrnFkI5jeIZEYtmI0wlGNuuYe9Pp8P3k-0-cf09fa280a70718c4f7ac04fedea2127)
图2.21 标示错误语句
以上错误捕捉功能需要在设置好的前提下才可以发挥作用。在下一章中,将重点介绍VBE环境及其选项设置。