作者moodyblue ()
看板Accounting
标题[心得] VBA如何更新会计期间
时间Sun Jan 22 07:43:15 2017
VBA如何更新会计期间
网志图文版:
http://www.b88104069.com/archives/4158
一般公认会计原则有个期间假设。我一直记得大学初会教授这麽介绍:一家
公司到底赚不赚钱、赚了多少,只有等到结束营业关门大吉才能最终确定,
可是投资者和债权人等不及了,所以在会计上要切成期间:每个月、每季度
、每年度。很多会计特有的专业术语,例如固资折旧、收入认列、费用配合
,都是围绕着如何分开期间而来。而在会计人的工作,也因为这样基本上设
定为以月为周期,周而复始地以每月结帐为基调,常常每个月结完帐,一大
堆管理报表要先更新期间,在此介绍如何以VBA更新会计期间:
一、产品别毛利汇总表,有这个月和上个月的资料,方便比较。此报表每个
月都要编制,格式相同,到了下个月,最原始作法,是复制上个月档案,手
工将期间从「1602」改成「1603」、将「1601」改成「1602」。
二、上个步骤更新期间需要改六个储存格,聪明一点的想法,是引用同一来
源更新。例如新建一个「参数」工作表,设计好会计期间的填写表格。
三、将报表表头连结到「参数」工作表,如此一来,每个月只要更新两个参
数,报表期间就更新好了,从六个储存格减到两个储存格。
四、类似这样的情况,Excel专业作法是「名称」。把上方功能区移到「公
式」页签,选择「名称管理员」,在跳出来的视窗「新增」。
五、「编辑名称」视窗,看起来一目了然,新增一个叫「本期期间」的名称
,其内容参照到「=参数!$B$1」。
六、於资料编辑列直接输入名称,Excel自动带出名称内容。
七、编写程式:「Names.Add Name:="本期期间A", RefersTo:="1604"」是
很标准的VBA语法,「Names」是操作对象,「Add」是操作方法,中间以「.
」隔开,後面「Name:=」和「 RefersTo:=」是关於此次操作的属性。顺
带一提VBA都是用半形符号,我文章为了编排版面,特地改成全形。「
ActiveWorkbook.Names.Add Name:="本期期间B", RefersTo:="=参数!$B$1"
」的说明如同程式里的附注:「'於目前工作簿新增名称」,应该不难理解
。「Current = InputBox("请输入本期期间", "会计期间") 」这里用到了
VBA特有的函数「InputBox」,两个参数用法在下一步骤会很清楚。
八、执行上一个步骤的「输入会计期间」巨集,最後会跳出输入视窗,这里
可以很清楚两个参数的作用,一个是视窗标题列的内容、一个是输入提示的
内容。
九、执行完巨集,再叫出「名称管理员」,成功建立好了会计期间的名称。
如果原来有报表期间有设定好使用「本期期间C」和「上期期间C」,在输入
完InputBox对话方块,会很神奇看到报表自动更新了会计期间。
InputBox是VBA特有的函数,它如同Excel里面的IF函数一样,结构简单但是
很实用。IF提供了公式计算中的逻辑判断,InputBox则是让Excel输入方式
不再局限於储存格,透过对话方块视窗和名称,等於是自行设计类似於一般
应用程式的输入界面,这是VBA主要功能之一。不过InputBox还是有先天限
制,只能输入文字型资料,而且一次只能输入一个,在某些情况并不适用,
必须有另外的方法,留待以後再介绍。
延伸阅读:
VBA如何整理程式代码
http://www.b88104069.com/archives/4157
VBA如何批次删除空白列
http://www.b88104069.com/archives/4153
VBA如何控制表单输入防止错误
http://www.b88104069.com/archives/4152
--
周末,我们继续Excel:=>21.心得=>5.其他=>3.office
会计人的Excel小教室:
https://www.facebook.com/acctexcel
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 112.20.97.205
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Accounting/M.1485042198.A.A0D.html