作者moodyblue ()
看板Accounting
標題[心得] VBA如何偵測程式錯誤
時間Wed Feb 15 23:51:03 2017
VBA如何偵測程式錯誤
網誌圖文版:
http://www.b88104069.com/archives/4169
Office不管是Word或者是Excel,都有提供拼字檢查的服務。打字時、特別
是打英文的時候,有單字拼錯了、有文法上小錯誤,微軟都會以下紅曲線貼
心地提醒你,這個地方有點不太對勁,這個是邊打邊檢查,等到全部打完一
篇文章,還可以呼喚微軟,幫忙文章從頭到尾再檢查一次。在VBA裡面,微
軟也提供類似的偵錯服務。比較起來,文章有疏誤,一般仍然可以閱讀理解
,VBA是高度規範化的程式語言,學給計算機看的,只要哪個地方出差錯,
無論大小,VBA便會卡住無法再運作下去。所以一方面,要以軟體工程師的
謹慎精神編寫VBA,另一方面,如果能善用微軟所提供的小工具,寫VBA程式
會更有感覺。以下具體分享:
一、先前章節的VBA程式,以此作為範例。最下面倒數第二行,本來是正確
的「RefersTo」,故意把中間的「s」,當作筆誤,變成錯誤的「ReferTo」
。
二、「執行」、「執行Sub或Userform」,這樣是從頭到尾跑完所有程式。
三、出現提示錯誤視窗:「物件不支援此屬性或方法」,按下「偵錯」。
四、Excel會將錯誤的那一行程式標明黃色,「Names」名稱物件不支援「
ReferTo」!
五、修改完後,「執行」、「繼續」,如果沒有再跳異常,表示程式OK。
六、程式量多的時候,一步一步檢查比較方便:「偵錯」、「逐行」。
七、第一行標黃色,在這裡不是代表有錯誤,而是目前逐行偵錯在執行這一
行程式。
八、第二行漏寫了中間的「u」,VBA提示錯誤。
九、除了執行偵錯,在編寫VBA時,應該養成習慣,全部程式用小寫英文編
打,如果拼字無誤,VBA會自動馬上轉換成首字大寫,例如輸入「if」,跳
到下一行,馬上會自己變成「If」,這是蠻貼心的即時程式偵測。
十、最後介紹「偵錯」裡的「切換中斷點」,作用是分段執行VBA,某些場
合可能需要。如圖所示,快速鍵是「F9」,另外直接在圖片咖啡圓點那裡,
滑鼠左鍵點擊也是同樣效果。
曾經設計一個稍微複雜的Excel公式,成功達到想要的效果,當我開心向別
人展示時,別人只是冷冷回我一句:「這個沒有太麻煩,手動輸入就好了吧
。」當場我臉上是三條線,不過回頭想想,會計上有個成本效益原則,操作
Excel時,確實也應該做這方面的考量。花時間鑽研,能達到效果還是好的
,有種情況是,出於對函數及VBA不熟、或者Excel本身限制,繞了一圈,回
來仍然一步一步手工操作,想追求效率,結果卻是適得其反。而VBA相較於
函數公式,功能更加強大,在設計上必須花更多時間、難度也是更高。所以
工作時要保持一個原則,避免走火入魔,如果這東西不是每個月重複用到、
如果簡單幾步就能手工輸入,除非已經是Excel達人,也許那就手工輸入吧
。不過話說回來,武功高強的人,最後絕對跑的比較快,利用空閒時間多多
練習Excel VBA,長期而言,工作效率一定是up、up、up!共勉之。
延伸閱讀:
VBA如何整理程式代碼
http://www.b88104069.com/archives/4157
VBA如何更新匯率
http://www.b88104069.com/archives/4159
VBA如何更新會計期間
http://www.b88104069.com/archives/4158
--
周末,我們繼續Excel:=>21.心得=>5.其他=>3.office
會計人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.20.96.155
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Accounting/M.1487173870.A.723.html
1F:推 OmegaDeath: 推 02/16 10:27