使用 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
開啟「即時運算」視窗後,預設會顯示在程式碼的下方。
更改輸出訊息的方式,將原本的使用
MsgBox
輸出訊息的地方,改用 Debug.Print
:
' 輸出至即時運算視窗 Debug.Print "s = " & s
Debug.Print
的功能就是輸出除錯用的訊息,使用這種方式輸出的資料都會直接顯示在「即時運算」視窗之中。
Step 4
執行更改好的 VBA 巨集程式,然後在「即時運算」視窗當中就可以看到 Debug.Print
所輸出的訊息了。
在使用 Debug.Print
輸出訊息時,每呼叫一次 Debug.Print
,就會自動在「即時運算」視窗中輸出一行訊息,開發者就可以一次清楚看到所有的除錯訊息,方便找出有問題的地方。
討論
「即時運算」視窗除了讓我們查看 Debug.Print
的輸出訊息之外,他也可以做為程式開發者的臨時計算機使用。
若要在「即時運算」視窗中進行臨時性的各種運算,可以先輸入一個問號 ?
,然後接著輸入運算式,例如若要計算 100/3
,則可輸入:
?100/3
接著再按下「Enter」鍵,即可得到運算結果。
除了普通的運算之外,各種的 VBA 程式碼都可以用這樣的方式來執行,例如若要取得 Excel 活頁簿的工作表數量,可以輸入:
?Worksheets.count
在「即時運算」視窗中輸入程式碼時,也會有自動補齊的功能可用,所以不必擔心記不住某些屬性或函數名稱。