天天看點

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

編譯錯誤編譯錯誤是因為過程中的VBA代碼書寫錯誤産生的,寫錯關鍵字、語句結構不配對等都會引起編譯錯誤,如:

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

當試圖執行存在編譯錯誤的VBA過程時,VBA會拒絕執行,并顯示一個對話框提示出錯原因,如圖 9-1 所示。

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

運作時錯誤如果過程在執行時試圖完成一個不可能完成的操作,如除以 0、打開一個不存在的檔案、删除正在打開的檔案等都會發生運作時錯誤。

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

VBA不會執行存在運作時錯誤的代碼,并會通過對話框告知我們出錯的原因,如圖 9-2所示。

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

邏輯錯誤如果過程中的代碼沒有任何文法問題,執行過程時,也沒有不能完成的操作,但執行過程後,卻沒有得到預期的結果,那麼這樣的錯誤稱為邏輯錯誤。舉個例,如果要把 1 到 10 的自然數依次寫進A1 : A10 區域,卻将過程寫成這樣:

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

這個過程中的每行代碼都沒有文法錯誤,也沒有不可執行的操作,但執行過程後,卻沒有得到期望的結果,如圖 9-3 所示。執行過程沒有得到期望的結果,是因為循環體中的代碼“Cells(1, 1).Value = i”存在問題。雖然過程中的代碼将 1 到 10 的自然數都寫入了單元格中,但每次寫入資料的都是Cells(1, 1)引用的A1 單元格,是以執行過程後,看到的是最後一次寫入單元格中的 10。

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

很多原因都會導緻過程出現邏輯錯誤,如循環變量的初值和終值設定錯誤,變量類型不正确等。與編譯錯誤和運作時錯誤不同,存在邏輯錯誤的過程,執行後Excel并不會給出任何提示。是以,邏輯錯誤最不容易被發現,但是在所有錯誤類型中占的比例卻最大。 調試代碼時,很多時候都是在處理過程中存在的邏輯錯誤。

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

  推薦閱讀  

北京大學出版社

《别怕,Excel VBA其實很簡單(第3版)》

gdi 中發生一般性錯誤_你不知道的VBAVBA 過程中可能會發生的三種錯誤

一句頂一萬句的“懶人心法”,

教你一鍵搞定所有報表! 

久經讀者和市場檢驗的暢銷書!