作者moodyblue ()
看板Accounting
標題[心得] VBA如何更新匯率
時間Thu Jan 26 13:52:48 2017
VBA如何更新匯率
網誌圖文版:
http://www.b88104069.com/archives/4159
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」,不正確鍵入參照是不行的。注意到上個步驟是有警示
但可以進行,這裡不僅僅是警示,而且此路不通。
七、正確於對話方塊輸入參照的畫面。
八、輸入完了兩個參照,果然更新了匯率和本幣借款金額,名稱是直接更新
數值(6.3),並沒有保留參照(=$B$2),這是VBA程式和Excel公式不同的
地方。
這篇文章以VBA函數和事件的方式,透過對話方塊輸入資料,對於Excel而言
,每項程序巨集,都是像篩選和排序那樣較為複雜的指令操作。在Excel上
方,配置有分門別類組合好的功能區頁籤,例如常用、公式、檢視等,把所
有相關的指令按紐放在一起,VBA對話方塊也是類似方式,將自己寫好的程
序放在一個面板上,也就是表單及控制項,具體操作稍後介紹。
延伸閱讀:
VBA如何整理程式代碼
http://www.b88104069.com/archives/4157
VBA如何更新會計期間
http://www.b88104069.com/archives/4158
VBA如何批次刪除空白列
http://www.b88104069.com/archives/4153
--
周末,我們繼續Excel:=>21.心得=>5.其他=>3.office
會計人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.20.96.237
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Accounting/M.1485409977.A.00E.html
1F:推 bluexiaomi: 推! 02/01 19:26