VBA如何更新匯率




Excel在資料輸入方面,分成兩大類型,一個是直接於儲存格輸入文字或數字,另一個是引用其他儲存格作為參照內容,正是後面這個超連結功能,讓Excel在操作上非常靈活。上一節介紹了VBA的InputBox函數,這個函數可以透過對話方塊輸入資料,不過在實際使用上,會發現這個函數無法引用其他儲存格內容。對此,VBA另外有個InputBox方法,它功能和InputBox函數類似,但是可以突破函數限制,以我們熟悉的Excel操作方式,直接於工作表選取範圍作為參照內容,以下具體介紹。

一、銀行借款明細表,以名稱方式設定匯率,換算外幣。

銀行借款明細表

二、VBA程式如圖所示,綠色部份是在前面加了一撇的備註,如同在Excel資料編輯列前面加上一撇,函數公式會變成是純粹文字,在VBA程式句前加一撇,會變成是程式集裡的單純文字,是程式說明的習慣用法。

函數公式會變成是純粹文字

三、執行巨集,在對話方塊想引用工作表上的匯率,發現滑鼠只要一離開對話方塊,馬上不停地轉呀轉,表示沒辦法超連結。不過這裡如果單純輸入數字,是可以達到更新匯率的效果。

在對話方塊想引用工作表上的匯率

四、改用「Application.InputBox」方法,「Type:=8」表示資料型態是儲存格參照。於此設置一個自動檢查程序:「If RMB < 0 Then MsgBox “匯率不得小於零”: End If」。正常在VBA語法,「End If」應該獨立一行,這裡簡潔起見,加了「:」將兩行程式連結成一行。另外對於「Names」而言,「Value」(值)和「RefersTo」(參照)兩種方法的結果是一樣的。

「Type:=8」表示資料型態是儲存格參照

五、為了測試檢查程序是否有效,參照到一個數值為負數的儲存格,果然跳出警示視窗,不過這裡並沒有進一步特別作處置,所以程式仍然繼續往下跑,結果就是以負數匯率換算。

參照到一個數值為負數的儲存格

六、另外也測試直接輸入數值,按「確定」,一樣跳出警示視窗,表示已經設定了「Type:=8」,不正確鍵入參照是不行的。注意到上個步驟是有警示但可以進行,這裡不僅僅是警示,而且此路不通。

另外也測試直接輸入數值,按「確定」

七、正確於對話方塊輸入參照的畫面。

正確於對話方塊輸入參照的畫面

八、輸入完了兩個參照,果然更新了匯率和本幣借款金額,名稱是直接更新數值(6.3),並沒有保留參照(=$B$2),這是VBA程式和Excel公式不同的地方。

名稱是直接更新數值(6.3)

這一節以VBA函數和事件的方式,透過對話方塊輸入資料。對於Excel而言,每項程序巨集,都是像篩選和排序那樣較為複雜的指令操作。在Excel上方,配置有分門別類組合好的功能區頁籤,例如常用、公式、檢視等,把所有相關的指令按紐放在一起,VBA對話方塊也有類似方式,將自己寫好的程序放在一個面板上,也就是表單及控制項,具體操作於下一節介紹。






當前文章延伸閱讀:
VBA自動化