Excel VBA偵錯:拼字檢查、逐行逐步執行、中斷點

Excel提供VBA二次開發,並且有自動偵錯輔助工具。本文以匯率更新程式為例,介紹VBA如何提示執行階段錯誤,進而說明逐行執行、小寫、切換中斷點等機制。

Office不管是Word或者Excel,都有提供拼字檢查的服務。打字時、特別是打英文的時候,有單字拼錯了、有文法上小錯誤,微軟都會以下紅曲線貼心地提醒你,這個地方有點不太對勁,像這種方式是邊打邊檢查,等到全部打完一篇文章,還可以呼喚微軟,幫忙文章從頭到尾再檢查一次。在VBA裡面,微軟也提供類似的偵錯服務。比較起來,文章有疏誤,一般仍然可以閱讀理解,VBA是高度規範化的程式語言,學給計算機看的,只要哪個地方出差錯,無論大小,VBA便會卡住無法再運作下去。所以一方面,要以軟體工程師的謹慎精神編寫VBA,另一方面,如果能善用微軟所提供的小工具,寫VBA程式會更有感覺。以下具體介紹:

一、故意輸入錯誤

先前章節的VBA程式,以此作為範例。最下面倒數第二行,本來是正確的「RefersTo」,故意把中間的「s」,當作筆誤,變成錯誤的「ReferTo」。

變成錯誤的「ReferTo」

二、執行VBA程式

「執行」、「執行Sub或Userform」,從頭到尾跑完所有程式。

「執行」、「執行Sub或Userform」

三、執行階段錯誤

出現提示錯誤視窗:「物件不支援此屬性或方法」,按下「偵錯」。

物件不支援此屬性或方法

四、自動標記錯誤

VBA會將錯誤的那一行程式標明黃色,「Names」名稱物件不支援「ReferTo」!

「Names」名稱物件不支援「ReferTo」

五、繼續執行程式

修改完後,「執行」、「繼續」,如果沒有再跳異常,表示程式OK。

修改完後,「執行」、「繼續」

六、程式逐行偵錯

程式量多的時候,一步一步檢查比較方便:「偵錯」、「逐行」。

「偵錯」、「逐行」

七、目前偵錯程式行

第一行標黃色,在這裡不是代表有錯誤,而是目前逐行偵錯在執行這一行程式。

而是目前逐行偵錯在執行這一行程式

八、果然提示錯誤

第二行漏寫了中間的「u」,VBA提示錯誤。

第二行漏寫了中間的「u」,VBA提示錯誤

九、自動轉換大寫

除了執行偵錯,在編寫VBA時,應該養成習慣,全部程式用小寫英文編打,如果拼字無誤,VBA會自動馬上轉換成首字大寫,例如輸入「if」,跳到下一行,馬上會自己變成「If」,這是蠻貼心的即時程式偵測。

全部程式用小寫英文編打

十、切換中斷點設置

最後介紹「偵錯」裡的「切換中斷點」,作用是分段執行VBA,某些場合可能需要。如圖所示,快速鍵是「F9」,另外直接在圖片咖啡圓點那裡,滑鼠左鍵點擊也是同樣效果。

切換中斷點

學習與設計VBA考量

曾經設計一個稍微複雜的Excel公式,成功達到想要的效果,當我開心向別人展示時,別人只是冷冷回我一句:「這個沒有太麻煩,手動輸入就好了吧。」當場我臉上是三條線。不過回頭想想,會計上有個成本效益原則,操作Excel時,確實也應該做這方面的考量。花時間鑽研,能達到效果還是好的,有種情況是,出於對函數及VBA不熟、或者Excel本身限制,多方研究繞了一圈,回來仍然一步一步手工操作,雖然想追求效率很好,但結果卻是適得其反。

進一步說,VBA相較於函數公式,功能更加強大,在設計上必須花更多時間、難度也是更高。所以工作時要保持一個原則,避免走火入魔,如果這東西不是每個月重複用到、如果簡單幾步就能手工輸入,除非已經是Excel達人,也許那就手工輸入吧。不過話說回來,武功高強的人,最後絕對跑的比較快,利用空閒時間多多練習Excel VBA,長期而言,工作效率一定是up、up、up!

歡迎加入Line社群,口袋裡的VBA小教室!

最新文章: