![ca121ddca8a6175d241a063fa08a4b37.png](https://i-blog.csdnimg.cn/blog_migrate/91bc56b50b0f42ce0097e0d6429d2aaf.png)
程序调试是编程过程的重要组成部分,程序调试可以让我们修正程序的语法错误和逻辑错误,并能尽可能的减少程序中的bug。Excel的VBE也提供了丰富的调试工具,如断点调试,立即窗口和监视窗口等。下面将介绍几个常用的VBA编程调试技巧。
技巧1:调试运行快捷键F5和F8
在VBE中完成VBA程序编写后,需要进行程序运行和调试。熟练运用快捷键能提高调试运行效率,快捷键F5和F8在调试运行时会经常用到。
快捷键F5是运行程序:
![f69bac6a39367d3ee78f666711eb8622.png](https://i-blog.csdnimg.cn/blog_migrate/dbfe7a34e827dff384c3de9144e5fc90.jpeg)
快捷键F8是让让程序逐句运行:
![aaa55c8b8ea9b6daf6e786b37b3a21c6.png](https://i-blog.csdnimg.cn/blog_migrate/4e078752feea3555f58592f7edc427f9.jpeg)
另外快捷键F8+Ctrl是让程序运行到光标所在的位置后暂停。
技巧2:断点调试
断点是一个信号,它通知调试器,在某个特定点上暂时将程序执行挂起。当执行在某个断点处挂起时,我们称程序处于中断模式,进入中断模式并不会终止或结束程序的执行,执行可以在任何时候继续。断点可以程序会停下来,这时可以检查各种变量的值,然后按步调试运行,观察程序的流向及各个变量的变化,便于快速排错和检查程序的运行顺序,特别是对于大型程序或者循环较多的程序使用断点调试会极大的提高排错效率。
![0b0ee2f8dda5729d36e425bc3bcf5695.png](https://i-blog.csdnimg.cn/blog_migrate/ed2b4b591886b14293bb5ed2c6487d5c.jpeg)
VBE编译器中断点的设置方式有如下几种:
第一种:首先将光标移动到需要设置断点的语句前,然后使用快捷键F9可以快速的设置和移除断点。
第二种:首先将光标移动到需要设置断点的语句前,然后右键点击,选择“切换”->“断点”来设置和移除断点。
![a605b2dba03ad12f7c6abe11d9c9d6cc.png](https://i-blog.csdnimg.cn/blog_migrate/9e245e9fc677c216debad0ea8fa4acef.jpeg)
推荐使用快捷键来设置和移除断点,方便快捷。
技巧3:VBA调试神器 Debug.print
Debug.print函数的功能就是将输出结果显示在立即窗口中,但不影响程序的执行,由于Debug.print 函数不影响程序的执行,因此不必像Msgbox显示结果那样去点击确定后,程序才能再继续执行。再者由于Debug.print函数的输出结果是显示在立即窗口的,因此在程序调试完成后不需要屏蔽这些调试语句也不影响用户使用。使用Debug.print函数的另一个好处是我们可以保存立即窗口的值,然后慢慢研究。
![30c7f39838667f8e764e1aaef9b4561b.gif](https://i-blog.csdnimg.cn/blog_migrate/f2a689c8908586fd790d24ba0c7a8e27.gif)
立即窗口可以通过点击菜单“视图”->“立即窗口”来打开,也可以通过快捷键Ctrl+G来打开。
![6c629998c425ae5db3ad62814855ccb1.png](https://i-blog.csdnimg.cn/blog_migrate/e29234d119c7dde5decadf17ce1fc7f1.jpeg)
除了debug.print,还有一个debug.assert用于指定条件不成立时中断程序执行(和断点一样暂停程序运行),类似在监视窗口添加一个监视条件(监视条件成立时暂停程序),这在大的循环中找到指定的点很有用,感兴趣的小伙伴们可以自行百度一下。
技巧4:使用本地窗口
使用本地窗口可以显示本过程中所有变量的值,通过这些变量的值来判断程序是否正确,具体增加本地窗口及显示内容的操作方法如下:
![80bb8d8b10375226c93015c4398bb07f.gif](https://i-blog.csdnimg.cn/blog_migrate/2edefdc04c141650a15ff9295a42d889.gif)
技巧5:利用监视窗口
监视窗口也可以动态的显示一些变量的值,它相对于本地窗口的好处主要有如下两个方面:
第一:你可以只看你想看的,你可以只把你想看的内容添加到监视窗口即可。
第二:你可以设置监视类型,监视类型有监视表达式,当监视值为真时中断,当监视值改变时中断三种。对有的复杂的循环程序,如果你每次单步执行,费时又费力。但你又确实想在某个特定情况下中断程序来观察某些变量或环境参数,这时便要用到监视窗口。如下面的例子,如果要查看m>500时i的值是多少?单步执行费费时费力。这时要监视表达式m>500,监视类型选"当监视值为真时中断"。随着程序运行,当m>500表达式成立时,便触发中断,具体参考如下:
![b7d8853be1e03573d8fcee6a94cef3e2.gif](https://i-blog.csdnimg.cn/blog_migrate/b8f8a66d3d8e248f8b5ffda392a50acb.gif)
另外调试时,一定要注意的是:第一:不要随意删代码,不太确定有没有用,复制一份出来,将代码注释掉,再修改,不要删了后发现有问题,想恢复也恢复不了额。第二:使用tab将代码格式调整调整好,不要自己都看不懂,如果代码写的规范,调试起来也会方便很多。
更多文章,请关注 吉祥编程 公众号