vba在运行的时候显示进度条_【收藏备用】VBA错误合集及调试技巧

d338098fab33540b5f0d7c1f06f9fc91.png

学习VBA有时候会有一个阶段:一看代码就会,一写就错的感觉。

归根到底还是眼高手低,对于代码不熟练。真正的勇士都是从一次一次的错误中总结经验,慢慢的减少代码错误。所以积累一些VBA错误提示及解决方法还是很有必要的。

而对于出错提示,VBA不太人性化,一般只会惜字如金的提示一下。一般都要进行调试看下具体错误所在的行数,来有针对性的修改代码。

ae0e1286f226b42f6c5ecbd16c865889.png

▍常见错误总结

错误通常都会有规律可循,我们就来总结一下VBA中经常出现的错误提示。接好了各位!

012d0c5d850d62204e636ad7bd73922c.png

Top1: Next没有For / 块if没有End if

这种错误就是循环语句没有写完全,这种错误在循环嵌套比较多的时候很容易出现。

a38170698e895340b7934004fcc684fb.png
我在想。if循环缺少结尾,你提示没有For干什么

b7b46f71445296b1133a394368104807.png
If循环缺少endif语句

Top2: 子过程或函数未定义/方法和数据成员未找到/要求对象

这种错误一般是代码语句拼写有误造成的,解决方法只能是多敲代码,加强记忆。比如下面的情况。

4dfd66948fcaf733ac93fcdd6c5b539b.png
replace函数拼写错了

efab7a42bc51a869eb6c313e347e0cc7.png
Worksheets拼写错了,这个必须记下来!

adb52b7c795fb06bf95956ff47a355fd.png
Workbooks拼写错了,我不止一次犯错!

Top3: 参数不可选

这种错误一般就是函数或者方法,必要的参数没有写全。

c49aaa7055952e37a2e593bf94b7cd58.png
replace函数的必要参数没写全,把abc中的a替换为b应该写成replace("abc","a","b")

Top4: 下标越界

这种错误一般是代码中的某些值超过了允许的范围,例如:

e2126557daf05bfe9704c7cf47cc5713.png
当前工作簿中没有“你好”这个工作表

e90be72b521b8deb15f07771d0db75ef.png
这么定义数组arr(5),最大下标是5,写6会提示下标越界

Top5: 溢出

当变量赋值超过变量的范围的时候,会提示溢出错误

9301525ec23ee8920eb0550b6eabc391.png
整型取值范围是-32768 到 32767 之间,i赋值70000,超过数据类型范围,提示出错

Top6: 错误1004:方法Range作用于对象_Global时失败

c22676d2213c0cd4e7cd468463a88f87.png
Range("A1:H")缺少H列的行号

Top7: 对象不支持该属性或方法

这种错误顾名思义,就是对象的属性用错。

a5aaedd8a482d0e93b49998a7d3c5018.png
隐藏行应该用Rows(1).Hidden = True,对Worksheet隐藏用Visible属性

Top8: 对象变量或者With变量未设置

2aed6ecd05b16b0df18ac65614b2dd4f.png
Find方法没有找到值为1的单元格,Rng为空。为了避免这种情况,一般加一句判断的代码:if not Rng is nothing

Top9: 缺少:表达式

715ec89068b0c3df4b4b96d3a5ceaac9.png
with...endwith结构,缺少必要表达式

好多,先列举这几个常见的...

7f53933ff0ec80d815077aa2cb5ccbef.png

▍常见错误总结常用调试方法

谁都不能保证程序写一遍完美运行,好的调试及自我发现错误纠正的习惯。对VBA代码完美运行也很重要。

我最常用的就是:F8+本地窗口(或Debug.Print+立即窗口)+断点

F8:逐步运行(笔记本有的是Fn+F8)

本地窗口:随时查看变量的赋值情况

断点:当代码及循环较多,打断点可以让程序直接运行到你出错位置前面,再对出错语句F8逐句进行调试。

本地窗口实例:通过本地窗口,我们看到Rng的值为nothing,说明没有返回查找到的对象,报错。

4c241b7689bcdb7a463e4dfaebb25abb.gif

F8+断点实例:要循环将近100次,不可能一直F8调试,这个时候就要加断点。让程序运行到断点处。再往下调试。

41bd152958b44977dc6f08eb1ed5e609.gif

当然还有其他调试方法,加Stop语句,Err捕获错误值等,不太常用。本文只介绍上面的方法,有兴趣的可以自己翻阅资料学习。

= 推荐阅读 =

你的小黄鸭来了~ | 操作Txt | VBA学习经验 | 合并拆分 | 字符串函数 | 循环知识 | 封装Dll | 进度条 | 生成二维码 | 联想输入 | 批量打印 | Target详解 | Find方法精讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值