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对话框也有类似方式,将自己写好的程序放在一个面板上,也就是窗体及控件,具体操作稍后介绍。