2022年7月25日 星期一

vba 偵錯入門

vba 偵錯,偵錯可說是每一個寫code人必經之路,簡單分想一下,小編自己偵錯常用的方法。

example1:

a = 1

b = 0

c = a / b

執行example1code後,會出現以下錯誤提醒畫面(熟悉嗎?)

圖1.錯誤
點選確定後,就自動結束執行運作了,今天還好僅有3行,如果300行 或3000行,那.......還真的不知道是那一行錯了 xd

所以這時候要加上一行,本篇主角 "on error goto line1"的指令;example2 參如下。

example2:

on error goto line1

a = 1

b = 0

c = a / b

line1:

MsgBox Err.Description & ";" & Err.Number '這行筆者加的,讓錯誤變成對話框內容

DEBUG.PRINT Err.Description & ";" & Err.Number   '這行筆者加的,讓錯誤顯示在即時運算畫面當中。

圖2.

圖3.

接下來,要如何偵錯錯誤行別??

使用RESUME;參example3 如下。


example3:

on error goto line1

a = 1

b = 0

c = a / b

line1:

MsgBox Err.Description & ";" & Err.Number '這行筆者加的,讓錯誤變成對話框內容

DEBUG.PRINT Err.Description & ";" & Err.Number   '這行筆者加的,讓錯誤顯示在即時運算畫面當中。

RESUME ' '這行筆者加的的目的,是要顯示錯誤行別 記得要點反紅點

圖4.

再透過F8功能鍵逐一執行,就可以知道那一行掛了

圖5.F8逐行執行動畫
(動畫:美執行一行等於按一次F8)






沒有留言:

張貼留言

程式:最近的物件陣列混用的想法,提高效率。

 最近有一個整理資料的需求。 但又不想做SQL, 所有我就做了一個資料包方式做處理 但每次有78萬筆資料要執行2次篩選 剩下約400筆資料才是本次需求的資料。 然後這400筆資料還要按照年度與科目都到表單上, 要一直不斷重複操作物件,效率大大下降。 所以我想了一個類似一半物件一半...