> 文章列表 > VBA实战篇学习笔记02 Err错误处理

VBA实战篇学习笔记02 Err错误处理

VBA实战篇学习笔记02 Err错误处理

文章目录

  • 专题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全局对象< Number || Description || Clear >
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默认的错误处理方式(弹出错误并中断程序运行)

  • 良好的错误处理方式:
    • 能够区分出错误类型
    • 能够与核心功能代码分开书写