对于不太复杂的程序,寻找错误并不太难。当程序过长时,从满堆的代码中查找和修正错误就要伤神得多。
幸运的是,Excel已经准备好了一套方便有效的代码调试工具,善用它,可以使调试代码的工作变得更简单、更快捷。
7.3.1 让程序进入中断模式
正因为在中断模式下可以一边运行程序,一边发现错误并修正错误,所以调试代码多数时间都选择在中断模式下进行。
出现编译错误时
如果程序存在编译错误,运行时系统会自动显示错误提示对话框,如图7-1所示。
对话框上有两个按钮,单击【帮助】按钮可以查看该错误的帮助信息;单击【确定】按钮即可进入中断模式,如图7-4所示。
图7-4 出现编译错误时
出现运行时错误
如果程序存在运行时错误,运行后会停止在发生错误的代码所在行,自动显示错误提示对话框,如图7-2所示。
这时可以单击对话框上的【调试】按钮让程序进入中断模式,如图7-5所示。
图7-5 出现运行时错误
中断一个正在执行的程序
如果程序中没有出现编译错误和运行时错误,程序会一直执行,直到结束。如果出现死循环,会一直执行下去,不会中止。如:
如果一个程序正在运行,当按下<Esc>键或<Ctrl+Break>组合键后,系统会中断执行它,并弹出提示对话框,如图7-6所示,单击对话框上的【调试】按钮即可让程序进入中断模式。
图7-6 中断一个正在运行的程序
7.3.2 为程序设置断点
什么是断点
断点像公路中途在检查站,当汽车开到这里就得停车接受检查。
如果你怀疑程序中某行(或某段)的代码存在问题,可以在该处设置断点。当程序运行到断点所在行时会暂停执行,停止在断点所在行,进入中断模式,如图7-7所示。
图7-7 程序停止在断点所在行
进入中断模式后,可以按<F8>键逐句执行程序,观察运行情况,从而发现并修正存在的错误。
给程序设置断点
方法一:
设置断点的方法一,如图7-8所示。
图7-8 利用<F9>键设置或清除断点
方法二:
设置断点的方法二,如图7-9所示。
图7-9 利用菜单命令设置或清除断点
方法三:
设置断点的方法三,如图7-10所示。
图7-10 单击边界条设置或清除断点
如果想清除程序中的所有断点,可以依次执行【调试】一【清除所有断点】菜单命令(或按<Ctrl+Shift+F9>组合键),如图7-11所示。
图7-11 清除程序中的所有断点
7.3.3 使用Stop语句
给程序设置的断点会在关闭文件的同时自动取消,如果你需要重新打开工作簿后继续使用设置的断点,可以使用Stop语句。
在程序里加入一个Stop语句,就像给程序设置了一个断点,当程序运行到Stop语句时,会停止在Stop语句所在行,进入中断模式,如图7-12所示。
图7-12 使用Stop语句中断程序
Stop语句在重新打开文件后依然存在,当不再需要Stop语句时,需要手动清除它。
7.3.4 使用立即窗口
如果你怀疑程序中的错误是因为变量设置错误引起的,可以在程序中使用Debug. Print语句将程序运行中变量或表达式的值输出到【立即窗口】中,程序运行结束后,在【立即窗口】中查看变量值的变化情况,如图7-13所示。
图7-13 使用立即窗口查看变量的值
如果程序处于中断模式下,也可以将光标移到变量名称上,直接查看变量的值,如图7-14所示。
图7-14 在中断模式下查看变量的值
7.3.5 使用本地窗口
在中断模式下,还可以利用【本地窗口】查看变量的数据类型和当前值,如图7-15所示。
图7-15 使用本地窗口查看变量的值和数据类型
如果【本地窗口】没有打开,可以依次执行【视图】一【本地窗口】菜单命令打开它,如图7-16所示。
图7-16 调出本地窗口
7.3.6 使用监视窗口
在中断模式下还可以使用【监视窗口】观察程序中变量或表达式的值。
使用【监视窗口】来监视变量或表达式前,必须先定义要监视的变量或表达式,监视表达式可以在设计模式或中断模式下定义。
使用快速监视
使用快速监视如图7-17所示。
图7-17 快速监视
完成后为程序设置断点,运行程序,就可以在【监视窗口】中看到相应的信息了,如图7-18所示。
图7-18 使用监视窗口
手动添加监视
手动添加监视如图7-19所示。
图7-19 手动添加监视
只有当程序处于中断模式时才能使用【监视窗口】,所以只有将程序切换到中断模式,【监视窗口】才能正常工作。
编辑或删除监视表达式
编辑或删除监视表达式如图7-20所示。
图7-20 编辑或删除监视