註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» Excel VBA 錯誤處理流程(全圖解)
返回列表
下一主題
上一主題
發帖
[原創]
Excel VBA 錯誤處理流程(全圖解)
iamaraymond
發短消息
加為好友
iamaraymond
(Raymond Chien)
當前離線
UID
30076
帖子
109
主題
12
精華
0
積分
177
金錢
177
點名
0
作業系統
win10
軟體版本
office2013
閱讀權限
20
性別
男
來自
高雄
在線時間
241 小時
註冊時間
2017-11-19
最後登錄
2023-7-5
暱稱:
Raymond Chien
中學生
帖子
109
主題
12
精華
0
積分
177
點名
0
作業系統
win10
軟體版本
office2013
閱讀權限
20
性別
男
來自
高雄
註冊時間
2017-11-19
最後登錄
2023-7-5
1
#
跳轉到
»
倒序看帖
打印
字體大小:
t
T
發表於 2018-5-22 20:48
|
顯示全部帖子
[原創]
Excel VBA 錯誤處理流程(全圖解)
VBA
本帖最後由 iamaraymond 於 2018-5-22 20:49 編輯
一般來說,當我們的程式執行起來沒有錯誤時,可以直接執行到底
下載
(8.68 KB)
2018-5-22 20:37
但如果不小心有個錯誤時,就會啟動「錯誤處理機制」
下載
(9.86 KB)
2018-5-22 20:38
那這時候,我們有3個方式來處理錯誤
1.on error resume next
2.on error goto [line]
3.on error goto 0
1.on error resume next
下載
(69.15 KB)
2018-5-22 20:39
若使用on error resume next的話,當出現錯誤時,雖然錯誤處理機制會啟動,但會馬上關閉
就像甚麼事都沒發生一樣繼續執行下一行,完全不會跳出錯誤訊息框
2.on error goto [line]
下載
(59.68 KB)
2018-5-22 20:40
當使用這個語法時,若遇到錯誤就會跳到指定的位置,
但要注意的是,此時錯誤機制並未關閉!!
也就是說,雖然程式可以繼續執行,但錯誤機制仍然是啟動中,所以萬一不小心又出錯。。。
下載
(66.83 KB)
2018-5-22 20:41
這個時候,他就會直接跳出錯誤訊息框,並暫停程式,這也是許多人會很困惑的地方
比如很多人常把on error goto [line] 的語法寫進迴圈中:
Sub test11()
For I = 1 To 3
continue:
On Error GoTo myErr
k = 0 / 0
Next
myErr:
k = 1
GoTo continue
End Sub
複製代碼
第一次執行時,可以成功跳轉到myErr,但第二次就不行了
原因就是此時錯誤機制已經啟動,在錯誤機制已經啟動時
即使你加了on error resume next 也一樣會跳出錯誤訊息框
Sub test12()
For I = 1 To 3
On Error GoTo myErr
k = 0 / 0
Next
myErr:
On Error Resume Next
I = 0 / 0
End Sub
複製代碼
那要如何把錯誤機制關閉呢?
這時有3個方法
(1)resume:關閉錯誤機制並回到出錯的那一行
下載
(79.1 KB)
2018-5-22 20:43
(2)resume next:關閉錯誤機制並回到出錯的下一行
下載
(72.64 KB)
2018-5-22 20:43
(3)on error goto -1:關閉錯誤機制並繼續執行下一行
下載
(69.67 KB)
2018-5-22 20:44
所以當錯誤機制被關掉時,若再次遇到錯誤就可以繼續用前面所說的3個方式來處理錯誤
3.on error goto 0
下載
(52.09 KB)
2018-5-22 20:46
on error goto 0會關閉錯誤機制,但跳出錯誤訊息框
那這時大家可能就會很疑惑:
Q:既然on error goto 0會直接跳出錯誤訊息框,為什麼還要使用這個語法呢?
A:因為有時候必須用這個語法來取消on error resume next 的功能
EX:曾有人問過如果我想要前十行可以跳過錯誤,但過了這十行要能跳出錯誤訊息框,要怎麼做呢?
Sub Test()
On error resume next
.
.
.
On error goto 0
End Sub
因此這時候就需要這個語法來取消on error resume next
補充篇:如何處理錯誤?
下載
(82.04 KB)
2018-5-22 20:45
下載
(53.86 KB)
2018-5-22 20:46
文章來源:
https://raymondchiendtrt.blogspot.tw/2018/05/vba_14.html#more
參考資料:
http://club.excelhome.net/thread-503926-1-1.html
http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=99895&pid=4506304
http://club.excelhome.net/thread-255631-1-1.html
http://yes.nctu.edu.tw/vb/9_Misc/%E5%8F%AF%E8%99%95%E7%90%86%E7%9A%84%E9%8C%AF%E8%AA%A4.htm
樓主熱帖
集保資料(改版後)
VBA網路爬蟲(網路資料蒐集)
VBA網路爬蟲-XMLHTTP物件
Excel VBA 自動抓取期交所 期貨每日交易行情
[教學文] 利用VBA抓股價資料--找出網站資料
請問這個付費功能是如何設定的呢?
Excel VBA 期交所資料自訂日數查詢
表單問題 請問如何控制checkbox數量
想請教使用FindWindow按下對話框的"儲存"
1
評分人數
准提部林:
GOOD+++
金錢 + 5
收藏
分享
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html
iamaraymond
發短消息
加為好友
iamaraymond
(Raymond Chien)
當前離線
UID
30076
帖子
109
主題
12
精華
0
積分
177
金錢
177
點名
0
作業系統
win10
軟體版本
office2013
閱讀權限
20
性別
男
來自
高雄
在線時間
241 小時
註冊時間
2017-11-19
最後登錄
2023-7-5
暱稱:
Raymond Chien
中學生
帖子
109
主題
12
精華
0
積分
177
點名
0
作業系統
win10
軟體版本
office2013
閱讀權限
20
性別
男
來自
高雄
註冊時間
2017-11-19
最後登錄
2023-7-5
2
#
發表於 2018-5-24 00:12
|
顯示全部帖子
回復
2#
nolookyou
感謝nolookyou大提供的經驗
其實小弟原本很擔心PO這種錯誤處理的文會不會太枯燥乏味XD
所以您的意思是說比較好的方式是
直接用on error resume next
接著下面就直接用if或select case語句
搭配err.number直接把錯誤處理掉嗎?
Excel VBA網頁資料收集教學:
http://forum.twbts.com/thread-20848-1-1.html
TOP
靜思自在 :
對父母要知恩,感恩、報恩。
返回列表
下一主題
上一主題
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 • 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲