作者:iamlaosong
百度一下,很容易找到debug.print解释和使用介绍,其实很简单,就是将代码执行结果显示在“立即窗口”中,但不影响程序执行。VBA程序调试过程中,经常需要监控变量的值,虽然MsgBox也可以完成这个功能,但用debug.print显示变量或者表达式的值,有很多优点,具体如下:
1、不影响程序执行,虽然MsgBox也可以显示代码执行结果,但是每次要按确定按钮才能继续下去,碰到大的循环语句简直无法进行;
2、程序调试结束后,应屏蔽这些调试语句,但即使有遗留的debug.print也不影响用户使用,MsgBox则不行;
3、最大的好处是:对于变量的值,可以在“立即窗口”慢慢研究,可以复制出来研究,比如我们要合成一个SQL语句,但执行时出错了,错在哪儿?程序中变量和值搅和在一起,很难找出出错点,尤其是引号和括号较多时,将合成好的SQL语句复制出来执行一下,可以轻松找到问题,MsgBox则不行。
除了debug.print,还有一个debug.assert用于指定条件不成立时中断程序执行(和断点一样暂停),类似在监视窗口添加一个监视条件(监视条件成立时暂停),这在大的循环中找到指定的点很有用,例如:
debug.assert i<126 'i大于等于126时暂停(注意:条件不成立时暂停)
顺便说一下立即窗口(按Ctrl+G或菜单选择),除了显示debug.print的执行结果外,在调试期间在立即窗口还可以直接输入语句,按回车后显示语句的执行结果,也可以用“?变量名”来显示变量的值(虽然鼠标移到变量上方时也会显示变量值,但如果值太长,是显示不全的)。例如,如果有个变量是mystr,可以在立即窗口输入下面例句:
? mystr
? left(mystr,5)
? instr(mystr,":")
if len(mystr)>0 then msgbox mystr