启动一个错误处理程序并指定该子程序在一个过程中的位置;也可用来禁止一个错误处理程序。
On Error Resume Next '开启错误处理,不弹出错误。
On Error Goto 0 '关闭错误处理,弹出错误。
上一个例子:
- Call myTest()
- Sub myTest()
- Dim a, b, c
- a=78
- b=0
- On Error Resume Next
- c = a / b
- If Err.number <> 0 Then
- print "出错了! Err.number = " & Err.number
- End If
- End Sub
不使用OnError的情况下,执行脚本会出现如下报错:
使用了On Error后,便不会出现上图的错误提示来中断脚本运行,而是根据脚本打印出log
- 出错了! Err.number = 11
如之前文章中ReadExcel函数中的一样。
'【Err对象方法】
Clear:清空err对象中的所有属性
例:Err.Clear
Raise:定义一个运行时错误
语法:Err.Raise(number,source,description,helpfile,helpcontext)
number:用于表示错误号
source:表示产生错误的对象或应用程序的名称
description:关于错误的描述信息
helpfile:help文件的有效路径
helpcontext:help文件的主题
例:Err.Raisevbobjecterror+1,"prjproject.clsclass","customerror","C:\help.txt",1
'【Err对象属性】
Number(errid):返回或设置一个表示错误的数值
Errid:可选。包含error的id
例:a =Err.Number '返回error的id
Err.Number = 2 '设置error的id
Description(string):返回或设置error的描述
string:可选。包含error的描述星系
例:a =err.description '返回error描述信息
Err.description = "类型不匹配" '设置error的描述信息
Helpcontext(conid):返回或设置指定帮助信息的主题
conid:可选。包含表示帮助文件的帮助主题
例:a =err.Helpcontext '返回error帮助主题
Err.Helpcontext = "类型不匹配" '设置error帮助主题
Helpfile(Filepath):返回或设置help文件的地址
Filepath:可选。包含help文件的有效地址
例:a =Err.Helpfile '返回error help地址
Err.Helpfile ="C:\help" '设置error help地址
Source(string):返回或设置报告错误的对象(或者应用程序的名称)
String:可选。包含对象名或者应用程序名称
例:a = Err.Source '返回产生error的对象或应用程序名称
Err.Source ="box" '设置产生error的对象或应用程序名称
'【Err.number 错误代码】
错误代码 信息
5 无效的过程调用或参数
6 溢出
7 内存不够
9 下标越界
10 数组长度固定或临时锁定
11 被零除
13 类型不匹配
14 字符串空间溢出
28 堆栈空间溢出
35 Sub 或 Function 未定义
48 加载 DLL 时出错
51 内部错误
53 文件未找到
57 设备 I/O 错误
58 文件已存在
61 磁盘已满
67 文件太多
70 没有权限
75 路径/文件访问错误
76 路径未找到
91 未设置对象变量或 With 块变量
92 未初始化 For 循环
94 无效的 Null 使用
322 无法创建必要的临时文件
424 要求使用对象
429 ActiveX 部件无法创建对象
430 类不支持 Automation
432 Automation 操作过程中,未找到文件名或类名
438 对象不支持此属性或方法
440 Automation 错误
445 对象不支持此操作
446 对象不支持命名的参数
447 对象不支持当前区域设置
448 未找到命名参数
449 此参数必选
450 参数个数错误或无效的属性赋值
451 对象不是集合
453 未找到指定的 DLL 函数
455 代码资源锁定错误
457 此键已和集合中的元素关联
458 VBScript. 中不支持使用 Automation 类型的变量
500 变量未定义
501 非法赋值
502 用此对象进行 Script. 编程会出错
503 对象不能安全初始化
1001 内存不够
1002 语法错误
1003 缺少“:”
1004 缺少“;”
1005 缺少“(”
1006 缺少“)”
1007 缺少“]”
1008 缺少“{”
1009 缺少“}”
1010 缺少标识符
1011 缺少“=”
1012 缺少“If”
1013 缺少“To”
1014 缺少“End”
1015 缺少“Function”
1016 缺少“Sub”
1017 缺少“Then”
1018 缺少“Wend”
1019 缺少“Loop”
1020 缺少“Next”
1021 缺少“Case”
1022 缺少“Select”
1023 缺少表达式
1024 缺少语句
1025 语句未结束
1026 缺少整型常数
1027 缺少“While”或“Until”
1028 缺少“While”、“Until”或语句结尾
1029 局部变量或参数过多
1030 标识符过长
1031 无效的编号
1032 无效的字符
1033 未终止字符串常数
1034 未终止注释
1035 嵌套的注释
1037 “Me”关键字使用无效
1038 “Loop”缺少“Do”
1039 无效的“Exit”语句
1040 无效的“For”循环控制变量
1041 名称被重定义
1042 必须是行中的第一个语句
1043 无法为非 ByVal 参数赋值
1044 调用 Sub 时不能使用括号
1045 缺少字母常数
1046 缺少“In”
32766 True
32767 False
32811 未找到元素