学习VBA有时候会有一个阶段:一看代码就会,一写就错的感觉。 归根到底还是眼高手低,对于代码不熟练。真正的勇士都是从一次一次的错误中总结经验,慢慢的减少代码错误。所以积累一些VBA错误提示及解决方法还是很有必要的。 而对于出错提示,VBA不太人性化,一般只会惜字如金的提示一下。一般都要进行调试看下具体错误所在的行数,来有针对性的修改代码。 ▍常见错误总结 错误通常都会有规律可循,我们就来总结一下VBA中经常出现的错误提示。接好了各位! Top1: Next没有For / 块if没有End if 这种错误就是循环语句没有写完全,这种错误在循环嵌套比较多的时候很容易出现。 我在想。if循环缺少结尾,你提示没有For干什么 If循环缺少endif语句 Top2: 子过程或函数未定义/方法和数据成员未找到/要求对象 这种错误一般是代码语句拼写有误造成的,解决方法只能是多敲代码,加强记忆。比如下面的情况。 replace函数拼写错了 Worksheets拼写错了,这个必须记下来! Workbooks拼写错了,我不止一次犯错! Top3: 参数不可选 这种错误一般就是函数或者方法,必要的参数没有写全。 replace函数的必要参数没写全,把abc中的a替换为b应该写成replace("abc","a","b") Top4: 下标越界 这种错误一般是代码中的某些值超过了允许的范围,例如: 当前工作簿中没有“你好”这个工作表 这么定义数组arr(5),最大下标是5,写6会提示下标越界 Top5: 溢出 当变量赋值超过变量的范围的时候,会提示溢出错误 整型取值范围是-32768 到 32767 之间,i赋值70000,超过数据类型范围,提示出错 Top6: 错误1004:方法Range作用于对象_Global时失败 Range("A1:H")缺少H列的行号 Top7: 对象不支持该属性或方法 这种错误顾名思义,就是对象的属性用错。 隐藏行应该用Rows(1).Hidden = True,对Worksheet隐藏用Visible属性 Top8: 对象变量或者With变量未设置 Find方法没有找到值为1的单元格,Rng为空。为了避免这种情况,一般加一句判断的代码:if not Rng is nothing Top9: 缺少:表达式 with...endwith结构,缺少必要表达式 好多,先列举这几个常见的... ▍常见错误总结常用调试方法 谁都不能保证程序写一遍完美运行,好的调试及自我发现错误纠正的习惯。对VBA代码完美运行也很重要。 我最常用的就是:F8+本地窗口(或Debug.Print+立即窗口)+断点 F8:逐步运行(笔记本有的是Fn+F8) 本地窗口:随时查看变量的赋值情况 断点:当代码及循环较多,打断点可以让程序直接运行到你出错位置前面,再对出错语句F8逐句进行调试。 本地窗口实例:通过本地窗口,我们看到Rng的值为nothing,说明没有返回查找到的对象,报错。 F8+断点实例:要循环将近100次,不可能一直F8调试,这个时候就要加断点。让程序运行到断点处。再往下调试。 当然还有其他调试方法,加Stop语句,Err捕获错误值等,不太常用。本文只介绍上面的方法,有兴趣的可以自己翻阅资料学习。
|
|