1. 程式人生 > 電腦技巧 >Excel VBA 除錯技巧:Debug.Print 與即時運算視窗使用教學

Excel VBA 除錯技巧:Debug.Print 與即時運算視窗使用教學

使用 VBA 開發環境的即時運算視窗,測試各種臨時的運算,以及輸出除錯訊息,協助開發者測試並找出程式的問題。


問題

通常我們在撰寫較複雜的程式時,會一次寫一小段,然後逐一測試每一段的執行結果是否正確,如果已經寫好的一小段程式碼執行結果正確,再繼續往下寫,這樣才不會等到全部寫完,執行結果錯誤時,分不清楚是哪裡有問題。

若要查看一些計算的結果,大家直覺上應該會使用 MsgBox 這類的方式來顯示計算結果,但是如果我想要輸出的資料有很多筆的話(例如查看 For迴圈中的資料時),每查看一筆資料,就要點一次 MsgBox 訊息視窗的「確定」按鈕,相當沒效率,該如何解決?

Dim i, s As Integer

s = 0

For i = 1 To 10

s = s + i

' 查看運算結果(必須點 10 次確定按鈕)

MsgBox "s = " & s

Next i

解法

如果想看的資料很多的時候,可以使用 Debug.Print 這個函數,配合 VBA 開發環境中的「即時運算」視窗,這樣就可以讓程式開發者快速的把大量的訊息或資料輸出來,一目了然,是一個非常好用的功能。

Debug.Print 與即時運算視窗

Step 1


在 VBA 的開發環境中,點選「檢視」中的「即時運算視窗」,或是直接按下 Ctrl + G 快速鍵。

開啟即時運算視窗Step 2


開啟「即時運算」視窗後,預設會顯示在程式碼的下方。

即時運算視窗

Step 3


更改輸出訊息的方式,將原本的使用 MsgBox 輸出訊息的地方,改用 Debug.Print:

' 輸出至即時運算視窗

Debug.Print "s = " & sDebug.Print 的功能就是輸出除錯用的訊息,使用這種方式輸出的資料都會直接顯示在「即時運算」視窗之中。

輸出除錯訊息Step 4


執行更改好的 VBA 巨集程式,然後在「即時運算」視窗當中就可以看到 Debug.Print 所輸出的訊息了。

執行結果在使用 Debug.Print 輸出訊息時,每呼叫一次 Debug.Print,就會自動在「即時運算」視窗中輸出一行訊息,開發者就可以一次清楚看到所有的除錯訊息,方便找出有問題的地方。

討論

「即時運算」視窗除了讓我們查看 Debug.Print 的輸出訊息之外,他也可以做為程式開發者的臨時計算機使用。

若要在「即時運算」視窗中進行臨時性的各種運算,可以先輸入一個問號 ?,然後接著輸入運算式,例如若要計算 100/3,則可輸入:

?100/3接著再按下「Enter」鍵,即可得到運算結果。

除了普通的運算之外,各種的 VBA 程式碼都可以用這樣的方式來執行,例如若要取得 Excel 活頁簿的工作表數量,可以輸入:

?Worksheets.count在「即時運算」視窗中輸入程式碼時,也會有自動補齊的功能可用,所以不必擔心記不住某些屬性或函數名稱。

自動補齊功能參考資料:Excel Campus、微軟 MSDN 官方網站、StackOverflow