EXCEL VBA深度嵌入“财务管理”实验课程教学研究
2017-11-08王甜甜洪志金
王甜甜,洪志金
(安徽三联学院 安徽 合肥 230601)
EXCEL VBA深度嵌入“财务管理”实验课程教学研究
王甜甜,洪志金
(安徽三联学院 安徽 合肥 230601)
EXCEL因具备简单易用,功能强大,以及可以进行二次开发等功能被用于财务管理实验课程教学之中,但功能强大EXCEL VBA 工具却被用之甚少、甚浅。将EXCEL VBA 工具深度嵌入“财务管理”实验课程教学不仅仅具备一定的现实意义,亦具备较好的可行性。文章以自定义静态投资回收期函数和设计财务管理分析系统模型界面为实例形象化的展现了EXCEL VBA深度嵌入实验教学的过程与效果。
EXCEL VBA;财务管理实验课程;深度嵌入
EXCEL VBA是解决财务管理工作中各种疑难杂症的有力工具,但当前“财务管理”实验教学对EXCEL VBA用之甚少、用之甚浅,课程内容仅仅是EXCEL常用功能与财务管理专业知识的简单组合。
1 EXCEL VBA深度嵌入“财务管理”实验教学的现实意义
1.1 有助于培养岗位所需的财务管理人才
与传统的会计核算岗位不同,财务管理岗位所涉及工作内容体现出较强的复杂性、综合性和灵活性。EXCEL常用功能无法适应个性化和特殊化的财务管理工作。为了解决财务管理岗位所遇到的各种疑难杂症,常需设计复杂的工作表模板,或者编写大量嵌套函数〔1〕。例如,EXCEL缺乏常用投资决策指标投资回收期的计算函数,实务工作中不得不编写繁琐的嵌套函数进行计算,而利用EXCEL VBA工具则可以方便快捷的编写出投资回收期的自定义函数。因此,将EXCEL VBA嵌入“财务管理”实验课程教学,有助于提升学生的专业技能和职业能力,拉近学校与企业、理论与实践的距离。
1.2 有助于实现教学目标的三个维度
教学目标的三个维度包括“知识与技能”、“过程与方法”和“情感态度与价值观”。教师在教学以及学生在学习VBA在财务管理中的运用技巧时,一方面需要对实验材料中的案例做深入的分析;另一方面需要进行算法设计、代码编写、精简与调试。这一过程不仅有助于学生深入掌握专业知识与技能,更有助于训练学生的逻辑思维能力、创新思维能力,形成系统化的思维模式。同时,这种运用编程语言来解决专业问题的教学思路有助于促使学生建立基于专业学科的价值观,通过VBA特有的语言形态体会财务管理课程的专业知识和基本原理。
1.3 有助于拓展“财务管理”实验课程的深度与广度
目前虽有部分应用型本科院开设了诸如《EXCEL在财务管理中的应用》一类的实验课程,但大部分课程内容对EXCEL工具的运用仅仅停留在图表制作、函数使用、常用数据分析和录制宏与简单代码编写等层次上,课程内容仅仅是对EXCEL技术与财务管理专业知识的简单组合,课程实验也仅仅是将纸质版的实验材料电子化。EXCEL VBA作为EXCEL必不可少的组成部分,在“财务管理”实验课程的教学中的深度嵌入,可以较好的促进EXCEL技术与财务管理专业知识的融合,拓展教学内容,提升教学深度,有利于此类课程的长远建设与发展。
2 EXCEL VBA深度嵌入“财务管理”实验教学的可行性分析
2.1 EXCEL VBA能够全方位的嵌入实验教学内容
财务管理实验课程内容的各个实验模块都能够较好的嵌入VBA所提供的解决方案。例如对于财务报表分析模型的构建,可以在原有的财务分析工作表模板基础上,利用VBA过程实现数据的自动化导入和模型的自动化构建;对于投资决策分析模型、筹资决策分析模型、流动资金管理模型等可以通过VBA窗体编写可视化的交互式的模型工具,并可以设计集成化常用分析工具界面实现快速调用;对于销售与利润管理模型中常用到的销售业绩、流向、趋势分析与因果分析等则可以直接调用EXCEL内置的数据分析工具实现〔2〕。
2.2 教学成本低、教学资源丰富
微软所提供的OFFICE软件包中自带了不同宿主的VBA 工具,财务管理中实验课程中所用到的EXCEL VBA工具无需专门购买、调试和安装。同时VBA 工具的使用对计算机硬件的配置要求不高,且兼容性也较好。由于语言简单,对于开设如VB、C+等编程语言类课程的院校无需开设前置课程,对于未开设院校只需在《计算机文化基础》、《办公自动化》等类似课程或财务管理实验课程中增加VBA基础知识部分的授课内容即可〔3〕。该类课程的案例库、实验资料网络资源相对丰富,教学资源取得成本低。
2.3 学生学习成本较低、易于接受
EXCEL VBA工具继承了Visual Basic for Windows的开发机制,为EXCEL提供了方便快捷的二次开发平台,其语言易于阅读,语法简单,学习成本低。如学生可以运用录制宏的功能获得所需代码,根据实验目标进行修改和完善,也可以通过使用字典或者调用工作表函数实现目标功能。此外,EXCEL VBA的宿主EXCEL软件具备使用普遍、界面友好、应用价值强等特征,故将VBA引入实验课程容易被学生所接受。
3 EXCEL VBA深度嵌入“财务管理”课程实验教学实例
3.1 在具体财务管理模块下嵌入自定义静态投资回收期函数
利用EXCEL VBA自定义函数需要用到Function过程。 “Function 程序名()”开头,以“End Function”结尾,其过程返回程序运行的值或数组。
1)案例引入与问题提出
某项目投资方案的年限与各年度现金流如图1所示,计算该项目的静态投资回收期。
图1 项目现金流与投资回收期的计算
2)利用工作表模板与工作表函数求解
传统方法求解静态投资回收期分为以下几个步骤:首先建立工作表模板,其次计算各年度累计现金流量,然后求解项目“投资回收期的整数年”,再次计算“投资回收期的小数年”,最后得到该项目整体静态投资回收期,具体函数的编写如图1所示。
3)利用VBA的Function过程自定义静态投资回收期函数
(1)代码编写。在VBE的代码窗口中编写如下代码,其中“#01”表示代码行号。
#01 Function SPP(cashflows As Range, typ As Boolean)
#02 Dim arr() As Double, i As Integer, leiji As Double, zs As Integer, xs As Double, x As Integer
#03 i = cashflows.Count
#04 ReDim arr(1 To i)
#05 For x = 1 To i
#06 arr(x) = cashflows.Cells(x)
#07 leiji = leiji + arr(x)
#08 If leiji > 0 And typ = True Then
#09 zs = x - 2
#10 xs = Abs(leiji - arr(x)) / arr(x)
#11 SPP = zs + xs
#12 Exit For
#13 ElseIf leiji > 0 And typ = False Then
#14 zs = x - 1
#15 xs = Abs(leiji - arr(x)) / arr(x)
#16 SPP = zs + xs
#17 Exit For
#18 End If
#19 Next x
#20 End Function
(2)主要代码解释。第1行代码定义函数名称为“SPP”,参数为“cashflows”和“typ”,其数据类型分别为Range对象和布尔型。第2行代码声明 “arr()”为动态数组,用来存储各期的“cashflows”金额;变量“i”为工作表中“cashflows”所占单元格数量,故而定义为Integer;变量“leiji”为累计净现金流量;变量“zs”和“xs”相当于投资回收期整数年和投资回收期小数年;变量“x”为For-Next循环语句的循环变量。第3行代码利用Range.Count 属性给变量“i”赋值。第4行代码利用Redim语句重新声明动态数组“arr()”的大小。第6行到第18行代码,为For-Next循环语句的循环体。第6行代码“arr(x) = cashflows.Cells(x)”利用Range.Cells 属性将“cashflows”所在单元格区域(本例为B2:I2)中第x个单元格的值赋给数组“arr()”的第x个元素。第7行代码将“cashflows”单元格区域的数值进行依次累加,求出各期的累计净现金流量。如图1所示,SPP函数在A20单元格的计算结果为5.266666667,与工作表函数分步骤计算结果一致,但使用起来更加简单方便,且适用性强。
3.2 财务管理系统集成化界面设计
1)案例引入与问题提出
财务管理工作中存在大量EXCEL模板和工具,操作起来极为不便。设计财务管理系统分析模型界面,为其制作集成化、交互式窗体,达到快速操作EXCEL模板和工具的目的。
2)设计效果规划
财务管理分析模型界面应当在同一窗体中集成常用财务管理子系统,以达到便捷调用和切换子系统之目的,如图2所示。每一子系统对应一个工作簿,当需要调用某个子系统时,勾选其 “启用”复选框即可,从而控制了打开工作簿的数量,提高 EXCEL运行速度。
图2 财务管理系统分析模型界面设计效果图
3)代码编写
上述各个子系统代码除打开工作簿名称不一致外,其余均相同,代码如下:
#01 Private Sub某某子系统复选框按钮_Click()
#02 On Error Resume Next
#03 If某某子系统复选框按钮.Value = True Then
#04 Workbooks.Open Filename:=ThisWorkbook.Path & "工作簿名称"
Workbooks.Open Filename:=ThisWorkbook.Path & "工作簿名称.xls"
#05 Else
#06 Windows("工作簿名称").Close savechanges:=True
Windows("工作簿名称.xls").Close savechanges:=True
#07 End If
#08 End Sub
4 结语
EXCEL VBA深度嵌入“财务管理”实验课程教学具备一定的必要性和可行性,但在实际教学过程中应当注重嵌入的角度、深度和难度。无论是整体嵌入,还是具体财务分析模块的嵌入,都应当具备一定的深度,注重于财务管理专业知识的融合而非简单组合。在合理把握教学难度的前提下,不仅要注重对EXCEL VBA提供的财务管理问题解决方案的教学,更要注重对学生设计思维能力、创新思维能力、系统思维能力和逻辑思维能力的训练。
〔1〕郭德贵. Excel财务管理应用研究〔J〕. 财会通讯,2012,(07):113-114.
〔2〕宋在科,周萍华. 应用型本科《财务管理》实验教学体系构建〔J〕. 绥化学院学报,2013,33(12):139-143.
〔3〕刘曜,刘茜,马萧. 会计学专业系统“自主开发”创新能力培养——基于EXCEL二次开发的实验〔J〕. 财会月刊,2014,(18):126-128.
2017-09-12
安徽三联学院校级质量工程重点项目“应用型本科院校《财务管理》实验课程内容体系构建——基于EXCEL VBA平台” 阶段性成果(16zlgc050);安徽三联学院校级科研平台基金重点项目“基于Benford法则的企业财务数据质量评价及EXCEL实现——以安徽省上市公司为例” 阶段性成果(PTZD2017014).
王甜甜(1989-),男,安徽省六安市人,安徽三联学院会计师,硕士.研究方向:审计鉴证与管理咨询.
1008-3723(2017)05-049-03
10.3969/j.issn 1008-3723.2017.05.021
G642.0
A