VBA代码调试

2020-07-28 11:27:05 浏览数 (1)

VBA写的再熟练的人,一般也很难做到一次性就写出完美无错的代码,总会有一些考虑不周全的情况或者单词写错而导致的程序出错,特别是新手,出错的可能就更加的高了。

出错是很正常的,我们需要掌握找到出错的原因,去解决错误。VBA编辑器里提供了一些方便的方法让我们去发现错误。

程序出错一般会有两种错误,编译错误和运行时错误。

1、编译错误:

所谓编译错误就是代码在编译过程中就能够发现的错误,一般是语法上的错误,比如写错了关键字。

VBA虽然不是编译型的语言,但在VBA编辑器的菜单调试下面,有一个编译子菜单,写完了一段代码,可以先点击这个菜单去尝试编译,如果没有任何提示,说明代码没有编译错误。否则会出现编译错误:

出现这个错误后,编辑器能够定位到出错的地方,一般我们都能够很快发现这种错误,这是一种比较常见也非常容易解决的错误。

2、运行时错误

这种错误是在程序运行过程中才会出现的错误,比如数组的下标越界,拼写错了对象的属性或者方法等:

这种有明显的提示,也是比较容易解决的错误,只要我们仔细检查代码,一般也是能够很快解决的。

3、逻辑错误

编译错误和运行时错误,一般随着写代码熟练度的增加,错误的情况也会越来越少,而真正难的另外一种错误是:

对程序运行来说并不能说是错误,但是与设计程序的预期结果不一致,这种错误一般是写代码时的一些逻辑上的出错,叫做bug,解决起来会比较困难。

这个时候,就需要一步一步的跟踪代码的执行,通过分析每一步的变量变化情况来判断。

  • Debug.Print

要查看变量运行过程中的值,我们可以在合适的位置设置Debug.Print语句,这样就可以查看运行到某个地方的时候,变量的变化情况,从而判断是否逻辑上出了问题。

  • Debug.Assert

Debug.Assert后面跟着的是一个判断,如果是false的情况就会停止运行。如果能够猜到可能出错的地方,则可以在这个地方加上这个语句,那程序运行到这个地方停下来,再进行细致的查看分析。

  • 设置断点

只需要在代码的最左边的边框上点击鼠标左键,就可以设置断点,这样程序在运行到断点处,就会自动停止运行,这个时候就可以通过鼠标移动到变量上来查看变量的值,或者通过视图-本地窗口来查看运行过程中变量的值。

  • 逐语句

逐语句也就是逐个的运行语句,快捷键是F8,只需要定位到某个过程内部,按F8就可以一条语句一条语句的运行程序,这样就方便随时查看变量的情况。

逐语句这个功能结合本地窗口,应该是VBA编辑器里最方便的查找程序逻辑出错的代码调试功能,掌握起来也比较容易。

‍但是一旦程序里有循环,循环次数又很多的情况下,也不可能真的一步一步的去执行代码,这个时候就需要结合其他的一些功能,比如结合Debug.Assert,或者是If i = 100 Then Stop这样的方法。

代码调试是写代码一定会碰上的,只要掌握了调试方法,理清了代码逻辑,解决也并不会很困难。

0 人点赞