讀古今文學網 > 別怕,ExcelVBA其實很簡單 > 7.1 VBA中可能會發生的錯誤 >

7.1 VBA中可能會發生的錯誤

7.1.1 編譯錯誤

如果編寫代碼時不遵循VBA的語法規則,如未定義變量、函數或屬性名稱拼寫錯誤、語句不配對(如有If沒有End If,有For沒有Next)等都會引起編譯錯誤,如圖7-1所示。

存在編譯錯誤的程序,運行時系統會顯示一個提示對話框,程序不會被執行,如圖7-1所示。

圖7-1 運行存在編譯錯誤的程序

7.1.2 運行時錯誤

如果程序在運行過程中試圖完成一個不可能完成的操作,如除以0、打開一個不存在的文件、刪除一個打開的文件等都會發生運行時錯誤。

運行存在運行時錯誤的程序,執行到錯誤代碼所在行時,Excel會顯示一個錯誤提示對話框,如圖7-2所示。

圖7-2 運行存在運行時錯誤的程序

7.1.3 邏輯錯誤

當程序中的代碼沒有語法問題,程序運行時,也沒有不能完成的操作,但程序運行結束後,卻不能得到預期的結果,這樣的錯誤稱為邏輯錯誤。

把1到10的自然數依次寫進A1:A10單元格,如果程序寫成這樣:

這個程序裡的每句代碼都沒有語法錯誤,也沒有不能完成的操作,但運行後卻不能得到預期的效果,如圖7-3所示。

圖7-3 程序運行前後

編寫程序時,很多原因都會引起邏輯錯誤。如:循環變量的初值和終值設置錯誤,變量類型不正確,代碼順序不正確等,而這些代碼單獨存在並沒有任何問題。

同其他兩種錯誤不同,存在邏輯錯誤的程序,運行後程序會正常執行,Excel並不會給出任何提示。所以,邏輯錯誤最難被發現,但在所有錯誤類型中占的比例卻最大。

因此,調試代碼時,多數時間都是在修改程序中存在的邏輯錯誤。