啓動一個錯誤處理程序並指定該子程序在一個過程中的位置;也可用來禁止一個錯誤處理程序。
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 未找到元素