作者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/cn.aspx?n=bbs/Accounting/M.1485409977.A.00E.html
1F:推 bluexiaomi: 推! 02/01 19:26