代碼的錯誤處理(Error Handling)方式之三

2021-03-02 VBA語言專家

今日的內容是「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





_______________________________

 

更多關聯閱讀

  



相關焦點

  • 代碼的錯誤處理(Error Handling)方式之二
    今日的內容是「VBA之EXCEL應用」的第八章「VBA代碼的調試及簡單錯誤的排除」。
  • 代碼的錯誤處理(Error Handling)方式之一
    今日的內容是「VBA之EXCEL應用」的第八章「VBA代碼的調試及簡單錯誤的排除」。
  • 【Rust blog】細說Rust錯誤處理
    當然,在寫這篇文章之時,也借閱了大量網際網路資料,詳見連結見底部參考連結掌握好Rust的錯誤設計,不僅可以提升我們對錯誤處理的認識,對代碼結構、層次都有很大的幫助。那廢話不多說,那我們開啟這段閱讀之旅吧:D!
  • 關於 Golang 錯誤處理的一些思考​
    但是 Go 1 對錯誤處理的支持過於簡單了,以至於日常開發中會有諸多不便利,遭到很多開發者的吐槽。這些不足催生了一些開源解決方案。與此同時, Go 官方也在從語言和標準庫層面作出改進。這篇文章將給出幾種常見創建錯誤的方式並分析一些常見問題,對比各種解決方案,並展示了迄今為止(go 1.13)的最佳實踐。
  • Python異常處理,告別xxxxError
    首先需要明白的是,我們無法完全阻止錯誤發生,但是可以提前預防以至於程序不會崩潰。這個提前預防的動作稱為異常處理(exception handling)。總之異常處理就是為了防患於未然。語句處理異常時,可以在後面「顯性」寫出我們要處理的錯誤類型,即 ZeroDivisionError。
  • JavaScript錯誤處理完全指南
    介紹了基礎知識之後,現在我們來研究 同步和異步 JavaScript 代碼中的錯誤和異常處理。同步代碼在大多數情況下很簡單,它的錯誤處理也是如此。同步代碼的執行順序和代碼的編寫順序一致。));代碼會記錄:Wrong type given, expected a string在 Promise 的世界中,catch 是用於處理錯誤的結構。
  • 使用 Panic、Defer 和 Recover 處理 Go 錯誤
    via:https://medium.com/technofunnel/error-handling-in-golang-with-panic-defer-and-recover-d77db7ae3875作者:Mayank Gupta四哥水平有限,如有翻譯或理解錯誤,煩請幫忙指出,感謝!文章源自 Medium,點讚超過 700+。
  • Go 經典入門系列 30:錯誤處理
    通過上面的代碼,你就知道了 *PathError 通過聲明 Error() string 方法,實現了 error 接口。Error() string 將文件操作、路徑和實際錯誤拼接,並返回該字符串。,那麼對應的 if 語句會執行,於是我們就可以適當地處理它們。
  • JS基礎-錯誤處理
    單擊文件名即可以只讀方式打開發生錯誤的腳本,發生錯誤的代碼行會突出顯示 SafariSafari在默認情況下都會隱藏全部JS錯誤信息,你必須啟用開發者菜單才能查看這些信息 錯誤處理 - 自帶語法// throw語句拋出錯誤信息throw new Error('error message')} catch(error){// 在錯誤發生時怎麼處理console.log(error.message) // message
  • 小叮噹爬蟲基礎(三):cookie、代理設置、error異常處理
    而對cookie的使用以及基本的反爬措施---代理設置,error異常處理等是十分重要的。當網站的維護人員發現你是爬蟲後,肯定要對你做相應的處理。很有可能直接封掉你的IP哦!這樣一來,我們便無法訪問了對數據的獲取也就自然中止了。所以在做爬蟲項目時,用代理去代替我們訪問是每個爬蟲工程師必備的基本技能。在urlib中設置代理IP的步驟都是固定的。
  • Excel VBA解讀(164):錯誤處理技術之On Error語句
    正如上文提到的,有兩種方法處理運行時錯誤。對於可預見的錯誤,編寫特定的代碼來處理它們。對於不可預見的意外錯誤,則使用VBA錯誤處理語句來處理。 在VBA中,On Error語句用於錯誤處理。當代碼運行時發生錯誤時,該語句將執行相應操作。
  • Golang錯誤處理:從咬牙切齒到欣然接受
    但是也有一些令人詬病的地方,其中Golang錯誤處理,"五行代碼,三行錯誤處理"。那麼怎么正確的處理和對待Golang錯誤處理機制呢?今天蟲蟲就和大家一起來說說Golang的錯誤處理。源起作為現代程式語言的鼻祖之一,C語言從一開始就沒有專門的錯誤或異常處理機制。
  • JavaScript 錯誤處理大全【建議收藏】
    同步錯誤處理異步錯誤處理Node.js中的錯誤處理Node.js 中的同步錯誤處理Node.js 中的異步錯誤處理:回調模式Node.js 中的異步錯誤處理:事件發射器總結❞編程中有什麼錯誤?介紹了基礎知識之後,現在讓我們將注意力轉向同步和異步 JavaScript 代碼中的錯誤和異常處理。同步錯誤處理同步代碼通常很簡單,它的錯誤處理也是如此。
  • Rust 中的錯誤處理 - Rust 實踐指南
    對於此等重要的工作,Rust 生態中特別有一個 crate error-chain 對錯誤處理在 Rust 標準庫之上給予了支持。本文我們通過在 main 方法中對錯誤適當處理、避免在錯誤轉變過程中遺漏錯誤、獲取複雜錯誤場景的回溯三個方面來了解 crror-chian crate。
  • js錯誤處理,"try..catch"
    在讀取階段發生的錯誤被稱為「解析時間(parse-time)」錯誤,並且無法恢復(從該代碼內部)。這是因為引擎無法理解該代碼。所以,try..catch 只能處理有效代碼中出現的錯誤。這類錯誤被稱為「運行時的錯誤(runtime errors)」,有時被稱為「異常(exceptions)」。
  • PHP 中的錯誤和異常處理
    就我自己這些年寫程序的現狀看,我基本上就沒有真正明白什麼是異常處理,經常把異常和錯誤處理混為一談,關於代碼中的那些寫法,不是寫錯了,就是寫的太特麼爛了。恰好最近在寫一些類時用到異常處理了,順便就把這個整理下,但是這個僅代表我個人的一些理解和使用,也可能是錯誤的,還請謹慎閱讀。概述錯誤處理定義錯誤是指導致系統不能按照用戶意圖工作的一切原因、事件。
  • JavaScript 錯誤和異常處理
    這些錯誤不是語法或運行時錯誤的結果。它們出現於在你編寫代碼時有邏輯錯誤從而在執行時不能得到預期的結果。你沒辦法捕獲這些錯誤,因為它們是你的業務代碼。try...catch...finally 語句這是 JavaScript 內置的錯誤處理工具,也是我們日常開發中常用的調試語句。
  • 關於JavaScript錯誤處理最完整的指南
    ;創建後,錯誤對象將顯示三個屬性:message:包含錯誤消息的字符串。name:錯誤的類型。stack:函數執行的堆棧跟蹤。介紹了基礎知識之後,現在我們來研究 同步和異步 JavaScript 代碼中的錯誤和異常處理。同步代碼在大多數情況下很簡單,它的錯誤處理也是如此。同步代碼的執行順序和代碼的編寫順序一致。
  • php7異常與錯誤處理和自定義異常
    像用PHP函數trigger_error(錯誤類型設置為:E_USER_ERROR) Parse error 語法解析錯誤語法檢查階段報錯,需要修改代碼!!!php 給我們提供了三個函數來幫助我們來處理,分別是set_error_handler()函數來託管錯誤處理程序,可自行定製錯誤的處理流程。
  • 再談PHP錯誤與異常處理
    本文章分5個部分介紹我的異常處理的理解:一、異常與錯誤的概述二、ERROR的級別三、PHP異常處理中的黑科技四、巧妙的捕獲錯誤和異常五、自定義異常處理和異常嵌套六、PHP7中的異常處理一、異常與錯誤的概述  PHP中什麼是異常:  程序在運行中出現不符合預期的情況,允許發生