购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

6.3 代码“无间道”
——Debug.Print与立即窗口

使用断点、监视与单步执行等方法调试程序,都必须打断程序的正常运行。但是有时候我们会希望在不干扰程序运行的情况下,也能观察程序的运行过程并排查出可能存在的错误。

针对这种需求,VBA 专门提供了一个合格的“线人”——Debug 对象。关于“对象”的概念本书会在后面章节中详细介绍,读者无须深究,只需了解Debug对象最常用的形式——Debug.Print即可。

如果我们想了解代码运行中某个表达式(变量、单元格等)的变化,只需要在代码中合适的位置写下“Debug.Print 该表达式”,程序每次运行到这句话时,Debug对象就会把这个表达式的取值“暗中”报告给我们。之所以说“暗中”报告,是因为它会把这个数值输出到一个名为“立即窗口(Immediate Window)”的地方。读者只要在VBA编辑器的“视图”菜单中选择“立即窗口”命令,就能在编辑器下方看到它。

比如针对案例6-2,如果我们在For循环中再添加一行语句“Debug.Print s”,即将s变量当前的数值输出到立即窗口中。既然这个代码中的For循环重复执行了4次(循环变量i从3变化到6),相应地也就执行了4次“Debug.Print s”,所以程序运行结束后我们就可以在立即窗口中看到4个数字,对应s的4次变化。具体运行效果如图6.17所示。

图6.17 使用Debug.Print 将变量数值输

更方便的是,Debug.Print 还允许我们在输出结果中插入一些说明文字,也就是字符串,从而让输出的结果更容易被读懂,比如“s的数值变化为 1913”。具体做法是:把所有想输出的字符串及变量等都写在Debug.Print的后面,并用分号或逗号把它们隔开。如果使用分号,代表前后两个内容并连在一起;如果使用逗号,代表两个内容之间相隔一个缩进符的宽度(相当于在两者之间按“Tab”键)。图6.18演示了这种效果。

图6.18 在Debug.Print 中输出多个字符

在图6.18所示的示例中,我们在一个Debug.Print语句中同时输出了两个字符串(“现在的i是”和“而s的数值是”)与两个变量(i和s),并分别使用分号和逗号将它们隔开。可以看到,这样输出的效果更加清晰易读,在调试复杂程序时会格外有用。请读者仔细思考这个例子中的输出结果,特别是双引号中的i和s与双引号之外的i和s的区别。同时也请注意分号与逗号在输出效果上的区别:后者在立即窗口中明显宽于前者。 8k44cYoEDWDTPFJ9e80x70leB2XEFwU6gh9aLz4o06NCvn3QNa8sF06wneB2qjPa

点击中间区域
呼出菜单
上一章
目录
下一章
×