文章目录
- 专题VI 错误处理
-
- 课时38 常见错误类型
-
- 错误代码13 :类型不匹配
- 错误代码91: 对象变量或者with变量未设置
- 错误代码1004: 视具体错误类型而变化
- 课时39 Err错误处理
-
- On Error Resume Next :
- Resume语句:
- Resume Next语句:
- 未知错误:
- Exit Sub
- On Error Goto 0
专题VI 错误处理
课时38 常见错误类型
01:47 错误代码13: 类型不匹配
04:54 变体数组与变体类型的区别详细解释
05:55 错误代码91: 对象变量或者with变量未设置
08:14 错误代码1004: 视具体错误类型而变化
错误代码13 :类型不匹配
- 数组与变体类型: 将单元格内容一次性赋值给数组时,必须使用`变体类型数组`,即数组中的每个类型都是变体
- 变体数组只是一个可以存放很多变体变量的容器,它本身并不是变体变量,所以无法变为字符串数组
- Split拆分结果: 必须赋值给字符串类型的动态数组
- 与Range不同,VBA可以确信Split的拆分结果一定都是字符串,所以要求
- For Each循环中必须使用变体变量作为循环变量
错误代码91: 对象变量或者with变量未设置
错误原因:
- 赋值时,忘写Set
- 引用了 空对象
错误代码1004: 视具体错误类型而变化
错误原因:
- 向Excel发出无法完成的指令
- 例如:
- 1: 应用程序定义或对象定义错误 ⇒ 引用不存在的Excel元素(例: 操作的元素(变量)值不存在)
- 2: Range的Select方法失效 ⇒ 尝试不可能的Excel用户操作(例: 激活sheet1,选择sheet2的Range)
- 3. 方法Range作用于对象WorkSheet失效 ⇒ 使用了不可能存在的地址(例: 单元格没有具体指向那个工作表)
课时39 Err错误处理
03:05 On Error Resume Next
04:38 On Error Goto || On Error Err
05:56 Err全局对象
07:41 Resume语句:
08:38 Resume Next 语句:
11:27 Err.Number > 0
12:12 On Error Goto 0
On Error Resume Next :
- VBA忽略一切错误继续运行(可能导致严重后果)
- 在使用On Error Resume Next 时,如果if/while判断条件发生错误,VBA仍然会忽略进入判断条件的内部继续执行
Resume语句:
让程序跳转到刚刚发生错误的语句上重新执行⇒ 注意会发生死循环
Resume Next语句:
让程序跳转到刚刚发生错误的语句的下一行上继续执行
未知错误:
- 不能单纯的使用Else,VBA代码会被继续执行
- 要使用 Err.Number > 0
Exit Sub
在正常语句之后,错误处理语句之前加上: Exit Sub,则不会自动进入错误处理语句
On Error Goto 0
一旦执行本语句,后面所代码在出错时,都恢复为VBA默认的错误处理方式(弹出错误并中断程序运行)
- 良好的错误处理方式:
- 能够区
分出
错误类型 - 能够与核心功能代码
分开
书写
- 能够区
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net