精華區beta Accounting 關於我們 聯絡資訊
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://www.ptt.cc/bbs/Accounting/M.1487173870.A.723.html