對於不太複雜的程序,尋找錯誤並不太難。當程序過長時,從滿堆的代碼中查找和修正錯誤就要傷神得多。
幸運的是,Excel已經準備好了一套方便有效的代碼調試工具,善用它,可以使調試代碼的工作變得更簡單、更快捷。
7.3.1 讓程序進入中斷模式
正因為在中斷模式下可以一邊運行程序,一邊發現錯誤並修正錯誤,所以調試代碼多數時間都選擇在中斷模式下進行。
出現編譯錯誤時
如果程序存在編譯錯誤,運行時系統會自動顯示錯誤提示對話框,如圖7-1所示。
對話框上有兩個按鈕,單擊【幫助】按鈕可以查看該錯誤的幫助信息;單擊【確定】按鈕即可進入中斷模式,如圖7-4所示。
圖7-4 出現編譯錯誤時
出現運行時錯誤
如果程序存在運行時錯誤,運行後會停止在發生錯誤的代碼所在行,自動顯示錯誤提示對話框,如圖7-2所示。
這時可以單擊對話框上的【調試】按鈕讓程序進入中斷模式,如圖7-5所示。
圖7-5 出現運行時錯誤
中斷一個正在執行的程序
如果程序中沒有出現編譯錯誤和運行時錯誤,程序會一直執行,直到結束。如果出現死循環,會一直執行下去,不會中止。如:
如果一個程序正在運行,當按下<Esc>鍵或<Ctrl+Break>組合鍵後,系統會中斷執行它,並彈出提示對話框,如圖7-6所示,單擊對話框上的【調試】按鈕即可讓程序進入中斷模式。
圖7-6 中斷一個正在運行的程序
7.3.2 為程序設置斷點
什麼是斷點
斷點像公路中途在檢查站,當汽車開到這裡就得停車接受檢查。
如果你懷疑程序中某行(或某段)的代碼存在問題,可以在該處設置斷點。當程序運行到斷點所在行時會暫停執行,停止在斷點所在行,進入中斷模式,如圖7-7所示。
圖7-7 程序停止在斷點所在行
進入中斷模式後,可以按<F8>鍵逐句執行程序,觀察運行情況,從而發現並修正存在的錯誤。
給程序設置斷點
方法一:
設置斷點的方法一,如圖7-8所示。
圖7-8 利用<F9>鍵設置或清除斷點
方法二:
設置斷點的方法二,如圖7-9所示。
圖7-9 利用菜單命令設置或清除斷點
方法三:
設置斷點的方法三,如圖7-10所示。
圖7-10 單擊邊界條設置或清除斷點
如果想清除程序中的所有斷點,可以依次執行【調試】一【清除所有斷點】菜單命令(或按<Ctrl+Shift+F9>組合鍵),如圖7-11所示。
圖7-11 清除程序中的所有斷點
7.3.3 使用Stop語句
給程序設置的斷點會在關閉文件的同時自動取消,如果你需要重新打開工作簿後繼續使用設置的斷點,可以使用Stop語句。
在程序裡加入一個Stop語句,就像給程序設置了一個斷點,當程序運行到Stop語句時,會停止在Stop語句所在行,進入中斷模式,如圖7-12所示。
圖7-12 使用Stop語句中斷程序
Stop語句在重新打開文件後依然存在,當不再需要Stop語句時,需要手動清除它。
7.3.4 使用立即窗口
如果你懷疑程序中的錯誤是因為變量設置錯誤引起的,可以在程序中使用Debug. Print語句將程序運行中變量或表達式的值輸出到【立即窗口】中,程序運行結束後,在【立即窗口】中查看變量值的變化情況,如圖7-13所示。
圖7-13 使用立即窗口查看變量的值
如果程序處於中斷模式下,也可以將光標移到變量名稱上,直接查看變量的值,如圖7-14所示。
圖7-14 在中斷模式下查看變量的值
7.3.5 使用本地窗口
在中斷模式下,還可以利用【本地窗口】查看變量的數據類型和當前值,如圖7-15所示。
圖7-15 使用本地窗口查看變量的值和數據類型
如果【本地窗口】沒有打開,可以依次執行【視圖】一【本地窗口】菜單命令打開它,如圖7-16所示。
圖7-16 調出本地窗口
7.3.6 使用監視窗口
在中斷模式下還可以使用【監視窗口】觀察程序中變量或表達式的值。
使用【監視窗口】來監視變量或表達式前,必須先定義要監視的變量或表達式,監視表達式可以在設計模式或中斷模式下定義。
使用快速監視
使用快速監視如圖7-17所示。
圖7-17 快速監視
完成後為程序設置斷點,運行程序,就可以在【監視窗口】中看到相應的信息了,如圖7-18所示。
圖7-18 使用監視窗口
手動添加監視
手動添加監視如圖7-19所示。
圖7-19 手動添加監視
只有當程序處於中斷模式時才能使用【監視窗口】,所以只有將程序切換到中斷模式,【監視窗口】才能正常工作。
編輯或刪除監視表達式
編輯或刪除監視表達式如圖7-20所示。
圖7-20 編輯或刪除監視