今日的內容是「VBA之EXCEL應用」的第八章「VBA代碼的調試及簡單錯誤的排除」。這講是第五節「代碼的錯誤處理(Error Handling)方式之三」。這套教程從簡單的錄製宏開始講解,一直到窗體的搭建,內容豐富,案例眾多。大家可以非常容易的掌握相關的知識,這套教程面向初學人員,共三冊,十七章,都是我們在利用EXCEL工作過程中需要掌握的知識點,希望大家能掌握利用。
第五節 代碼的錯誤處理(Error Handling)方式之三大家好,關於代碼在運行時出現錯誤後的處理方式,在前面的兩節中我們講了On Error Resume Next語句和On Error GoTo line語句,這兩種語句在實際應用中比較廣泛,特別是On Error Resume Next語句,可以說是在VBA代碼中應用的非常多,今日我再給大家介紹一種語句:On Error GoTo 0,這個語句很多時候是和前兩個語句一起使用。也是VBA錯誤處理的語句之一。
1 On Error GoTo 0 語句的理解語法:On Error GoTo 0 禁用當前過程中的任何已啟用的錯誤處理程序。
上述語法說明:如果程序中已啟用了某個錯誤處理程序,當執行On Error GoTo 0的時候,正在起作用的錯誤處理程序將被禁用。
lOn Error GoTo 0 禁用當前過程中的錯誤處理。它不將行0指定為錯誤處理代碼的開始位置,即使此過程包含編號為 0 的行。在不使用On Error GoTo 0語句的情況下,退出過程時將自動禁用錯誤處理程序。
l程序在運行過程中我們可以用On Error Resume Next語句屏蔽掉某段代碼中可能出現的預知的不要處理的錯誤,如果接下來,一切是未知的,我們需要啟動錯誤處理或者錯誤的捕獲,就可以用On Error GoTo 0 來實現。
2 On Error GoTo 0 語句的實例應用為了更好地理解On Error GoTo 0語句,我們來看下面的代碼:
Sub mynzD() 'On Error GoTo 0 語句應用
On Error Resume Next
i = 1
T1 = 1 / 0
On Error GoTo myERR
i = 2
T2 = 1 / 0
On Error GoTo 0
i = 3
T3 = 1 / 0
Exit Sub
myERR:
MsgBox i & "處發生錯誤,不能計算 "
Resume Next
End Sub
代碼的解讀:
1) On Error Resume Next 代碼首先加入一個錯誤處理語句,如果發生錯誤,忽略錯誤,繼續執行下面的語句。
2)i = 1
T1 = 1 / 0
這裡會發生一個錯誤,就是除數為零。但是,沒有任何的顯示。
3)On Error GoTo myERR 插入錯誤處理語句,如果發生錯誤,代碼轉跳到myERR標籤行。
4) i = 2
T2 = 1 / 0
這裡會發生第二個錯誤,仍是除數為零,發生這個錯誤時,由於上面利用了On Error GoTo myERR,代碼會轉跳到myERR標籤行。
5)On Error GoTo 0 插入一個錯誤處理語句,要求程序屏蔽掉錯誤,處理為正常運行。
6) i = 3
T3 = 1 / 0
這裡會發生第三個錯誤,原因是除數為零,這個時候,程序會正常捕獲錯誤,終止運行。
7)myERR:
MsgBox i & "處發生錯誤,不能計算 "
Resume Next
這是發生錯誤時轉跳過來的語句,首先彈出對話框告訴用戶是哪個地方發生了錯誤。然後會再回到程序中。繼續執行發生錯誤後的語句。
整個過程中利用了三種錯誤處理語句,大家在測試的時候可以調換位置,試試運行的效果。
3 On Error GoTo 0 語句的執行效果測試我們在工作表窗口點擊運行按鈕,看代碼的執行效果:如下截圖,首先提示給我們的是在2處發生了錯誤。就是下面的第二行代碼:
i = 2
T2 = 1 / 0
這裡發生的錯誤代碼會轉跳到錯誤處理語句,在這之前把第一個錯誤已經忽略掉了。
我們點擊確定:代碼繼續運行,會彈出下面的界面:
我們點擊調試:
上面截圖表明,此時的錯誤是在第三處發生的。
以上各步驟的執行效果,反應了代碼中各個錯誤處理語句的作用。
今日內容回向:
1) On Error GoTo 0語句作用是什麼?
2) On Error GoTo 0語句是如何利用的?
3) 利用On Error GoTo 0語句要注意什麼?
本講內容參考程序文件:工作簿08.xlsm
分享成果,隨喜正能量
VBA的應用及學習方法:VBA是利用Office實現個人小型辦公自動化的有效手段(工具)。這是我對VBA的應用界定。在取代OFFICE新的辦公軟體沒有到來之前,誰能在數據處理方面做到極致,誰就是王者。其中登峰至極的技能非VBA莫屬!
我記得20年前自己初學VBA時,那時的資料甚少,只能看源碼自己琢磨,真的很難。20年過去了,為了不讓學習VBA的朋友重複我之前的經歷,我根據自己多年VBA實際利用經驗,推出了七部VBA專門教程。
第一套:VBA代碼解決方案 是VBA中各個知識點的講解,教程共147講,覆蓋絕大多數的VBA知識點,提供的程序文件更是一座不可多得的代碼寶庫,是初學及中級人員必備教程;目前這套教程提供的版本是修訂第二版,程序文件通過32位和64位兩種OFFICE系統測試。
第二套:VBA資料庫解決方案 資料庫是數據處理的專業利器,教程中詳細介紹了利用ADO連接ACCDB和EXCEL的方法和實例操作,適合中級人員的學習。目前這套教程提供的是修訂第一版教程,程序文件通過32位和64位兩種OFFICE系統測試。
第三套:VBA數組與字典解決方案 數組和字典是VBA的精華,字典是VBA代碼水平提高的有效手段,值得深入的學習,是初級及中級人員代碼精進的手段。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第四套:VBA代碼解決方案之視頻 是專門面向初學者的視頻講解,可以快速入門,更快的掌握這門技能。這套教程是第一套教程(修訂一版)的視頻講解,視頻更易接受。
第五套:VBA中類的解讀和利用 這是一部高級教程,講解類的虛無與肉身的度化,類的利用雖然較少,但仔細的學習可以促進自己VBA理論的提高。這套教程的領會主要是讀者的領悟了,領悟一種佛學的哲理。目前這套教程提供的版本是修訂第一版,程序文件通過32位和64位兩種OFFICE系統測試。
第六套教程:VBA信息獲取與處理,這是一部高級教程,涉及範圍更廣,實用性更強,面向中高級人員。教程共二十個專題,包括:跨應用程式信息獲得、隨機信息的利用、電子郵件的發送、VBA網際網路數據抓取、VBA延時操作,剪切板應用、Split函數擴展、工作表信息與其他應用交互,FSO對象的利用、工作表及文件夾信息的獲取、圖形信息的獲取以及定製工作表信息函數等等內容。程序文件通過32位和64位兩種OFFICE系統測試。
第七套教程:VBA之EXCEL應用 這是一部初級教程這部教程共三冊,從從創建宏、對話框、工作簿和工作表對象、單元格對象等基礎內容講起,到循環結構、錯誤處理、字符串操作、日期和時間、事件、數組應用,函數過程等方面,一直講解到控制項和窗體對象的應用都是我們提高自己EXCEL水平的必須。
以上各教程學習順序:7→1(或者4)→3→2→6→5。其中第四套是對第一套的視頻講解,所以第一和第四隻選其一即可。
2月10日到16日,新春鉅惠,為鼓勵大家春節期間不外出,少聚會,多學習,,提升自己,所有教程9折,聯絡微信VBA6337
_______________________________
更多關聯閱讀