编译错误编译错误是因为过程中的VBA代码书写错误产生的,写错关键字、语句结构不配对等都会引起编译错误,如:
当试图执行存在编译错误的VBA过程时,VBA会拒绝执行,并显示一个对话框提示出错原因,如图 9-1 所示。
运行时错误如果过程在执行时试图完成一个不可能完成的操作,如除以 0、打开一个不存在的文件、删除正在打开的文件等都会发生运行时错误。
VBA不会执行存在运行时错误的代码,并会通过对话框告知我们出错的原因,如图 9-2所示。
逻辑错误如果过程中的代码没有任何语法问题,执行过程时,也没有不能完成的操作,但执行过程后,却没有得到预期的结果,那么这样的错误称为逻辑错误。举个例,如果要把 1 到 10 的自然数依次写进A1 : A10 区域,却将过程写成这样:
这个过程中的每行代码都没有语法错误,也没有不可执行的操作,但执行过程后,却没有得到期望的结果,如图 9-3 所示。执行过程没有得到期望的结果,是因为循环体中的代码“Cells(1, 1).Value = i”存在问题。虽然过程中的代码将 1 到 10 的自然数都写入了单元格中,但每次写入数据的都是Cells(1, 1)引用的A1 单元格,所以执行过程后,看到的是最后一次写入单元格中的 10。
很多原因都会导致过程出现逻辑错误,如循环变量的初值和终值设置错误,变量类型不正确等。与编译错误和运行时错误不同,存在逻辑错误的过程,执行后Excel并不会给出任何提示。所以,逻辑错误最不容易被发现,但是在所有错误类型中占的比例却最大。
调试代码时,很多时候都是在处理过程中存在的逻辑错误。
![59011f6b6ababb8b298d8a19190abae4.png](https://i-blog.csdnimg.cn/blog_migrate/3184e669ef90b43a4c70ba9ba4017fae.png)
![45477f1309eae44b0e8611b2532c8e33.png](https://i-blog.csdnimg.cn/blog_migrate/0d6984b50e981135fcf9a898ece96ac9.png)
![260477b65b7170ac09cab32b2d479e77.png](https://i-blog.csdnimg.cn/blog_migrate/0d88ea07803be06204577dd8b5b573b7.png)
![68aae6026e08eac94444a1cef7f6501a.png](https://i-blog.csdnimg.cn/blog_migrate/e7d1659512894063ec42caf52c23452e.png)
![3cb6740e2a7008ab854794854bb660ef.png](https://i-blog.csdnimg.cn/blog_migrate/76e5841e4d29fbf64b1bbd2a826164fc.png)
![bb344a97e8e3362ae5aed7a892937623.png](https://i-blog.csdnimg.cn/blog_migrate/dc557c207caf9419d060c634e73ce353.png)
推荐阅读
北京大学出版社《别怕,Excel VBA其实很简单(第3版)》
一句顶一万句的“懒人心法”,
教你一键搞定所有报表!
久经读者和市场检验的畅销书!