VBA的InputBox方法是在對話方塊中,直接輸入或引用儲存格參照,所輸入或引用的資料可作為程式變數值或Excel名稱定義,本文以外幣銀行借款更新匯率為例介紹。
Excel在資料輸入方面,分成兩大類型,一個是直接於儲存格輸入文字或數字,另一個是引用其他儲存格作為參照內容,正是後面這個超連結功能,讓Excel在操作上非常靈活。上一節介紹了VBA的InputBox函數,這個函數可以透過對話方塊輸入資料,不過在實際使用上,會發現這個函數無法引用其他儲存格內容。對此,VBA另外有個InputBox方法,它功能和InputBox函數類似,但是可以突破函數限制,以我們熟悉的Excel操作方式,直接於工作表選取範圍作為參照內容,以下具體介紹。
一、Excel名稱管理員
銀行借款明細表,以名稱方式設定匯率,換算外幣。
二、VBA程式添加註解
VBA程式如圖所示,綠色部份是在前面加了一撇的備註,如同在Excel資料編輯列前面加上一撇,函數公式會變成是純粹文字,在VBA程式句前加一撇,會變成是程式集裡的單純文字,是程式說明的習慣用法。
三、VBA InputBox用法測試
執行巨集,在對話方塊想引用工作表上的匯率,發現滑鼠只要一離開對話方塊,馬上不停地轉呀轉,表示沒辦法超連結。不過這裡如果單純輸入數字,是可以達到更新匯率的效果。

四、Application.InputBox
改用「Application.InputBox」方法,「Type:=8」表示資料型態是儲存格參照。於此設置一個自動檢查程序:「If RMB < 0 Then MsgBox “匯率不得小於零”: End If」。正常在VBA語法,「End If」應該獨立一行,這裡簡潔起見,加了「:」將兩行程式連結成一行。另外對於「Names」而言,「Value」(值)和「RefersTo」(參照)兩種方法的結果是一樣的。
五、錯誤提示視窗
為了測試檢查程序是否有效,參照到一個數值為負數的儲存格,果然跳出警示視窗,不過這裡並沒有進一步特別作處置,所以程式仍然繼續往下跑,結果就是以負數匯率換算。
六、InputBox Type測試
另外也測試直接輸入數值,按「確定」,一樣跳出警示視窗,表示已經設定了「Type:=8」,不正確鍵入參照是不行的。注意到上個步驟是有警示但可以進行,這裡不僅僅是警示,而且此路不通。
七、Excel InputBox輸入
正確於對話方塊輸入參照的畫面。
八、VBA更新Excel名稱
輸入完了兩個參照,果然更新了匯率和本幣借款金額,名稱是直接更新數值(6.3),並沒有保留參照(=$B$2),這是VBA程式和Excel公式不同的地方。
VBA程式設計對話方塊
這一節以VBA函數和事件的方式,透過對話方塊輸入資料。對於Excel而言,每項程序巨集,都是像篩選和排序那樣較為複雜的指令操作。在Excel上方,配置有分門別類組合好的功能區頁籤,例如常用、公式、檢視等,把所有相關的指令按紐放在一起,VBA對話方塊也有類似方式,將自己寫好的程序放在一個面板上,也就是表單及控制項,具體操作於下一節介紹。