在Excel环境中运用VBA实现中文大写金额转换
2009-02-01柳佳顾士学
柳 佳 顾士学
[摘 要]在Excel中运用VBA实现了中文大写金额转换提高了工作效率
[关键词]VBA Excel 函数
[中图分类号]TD17[文献标识码]A[文章编号]1007-9416(2009)12-0110-02
在财会上很多情况下,需要从小到大写金额的转换,虽然我们通过设置Excel的单元格的特殊格式,可以将数字转换为中文大写数字。但这些方法有的不够实用,有的输出格式不符合财会规定。下面我们提出在Excel环境中运用VBA技术实现中文大写金额转换。
1 环境选择
Excel 是微软公司集成办公软件Office 中的一个组件,是用户使用最为广泛的软件平台之一。用其内嵌的编程语言VBA进行二次开发得到的应用软件,既可以使繁琐、重复操作自动化,提高工作效率和应用水平,同时又不改变Excel原有的界面风格、系统功能和操作方式,特别是它的编辑、排版、打印功能。用户不必经过特殊学习和培训,即可使用,大大降低软件的使用门槛,提高了软件的可用性。
2 VBA简介
Visual Basic for Applications(简称VBA)是新一代标准宏语言,它具有跨越多种Office 应用软件并且控制应用软件对象的能力。VBA提供了面向对象的程序设计方法,提供了比较完整的程序设计语言。Office就不仅仅是应用程序,更是一个开发平台,可以利用VBA对Office 进行二次开发,扩展其功能。
VBA具有以下特征:
2.1 VBA 是一种解释性语言
由于 VBA 是在VISUAL BASIC 的框架上建立起来的因此它也继承了Visual Basic 作为一种解释性语言的特性
2.2 VBA 是一种面向对象的语言
作为新一代的高级语言VBA 提供了对面向对象的程序设计方法的支持实际上VBA 的工作过程就是对各种对象包括VISUAL BASIC对象和OFFICE对象进行操作的过程
2.3 VBA支持可视化的编程环境
VBA 提供了新颖的可视化设计工具巧妙地将Windows 界面设计的复杂性封装起来程序开发人员不必再为界面设计而编写大量程序代码仅需采用现有工具按设计者要求的布局在屏幕上画出所需界面并为各图形对象设置属性即可。
3 问题实现
进入VBA编辑环境,建立一个模块,在模块中定义一个名为ChangeLU的函数,代码如下:
Function ChangeLU(XXJE As String)
SL = "零壹贰叁肆伍陆柒捌玖"
JE = "分角元拾佰仟万拾佰仟亿"
M = Replace(Trim(XXJE), ".", "")
N = Len(M)
J = N: DXJE = ""
For I = 1 To N
W = Val(Mid(M, I, 1)) '
If W > 0 Then
DXJE = DXJE + Mid(SL,W +1, 1)
DXJE = DXJE + Mid(JE, J, 1)
ElseIf W = 0 Then
If Mid(JE, J, 1) = "万" Then
DXJE = DXJE + Mid(JE, J, 1)
ElseIf Mid(JE, J, 1) = "元" Then
If Len(M) = 3 Then
DXJE = DXJE + "零"
End If
DXJE = DXJE + "元"
If Val(Mid(M, I + 1, 1)) > 0 And Len(M) > 3 Then
DXJE = DXJE + Mid(SL, W + 1, 1)
End If
ElseIf Val(Mid(M, I + 1, 1)) > 0 Then
DXJE = DXJE + Mid(SL, W + 1, 1)
ElseIf Val(Mid(M, I)) = 0 Then
If J >= 7 Then DXJE = DXJE + "万"
If J >= 3 Then DXJE = DXJE + "元"
DXJE = DXJE + "整"
Exit For
End If
End If
J = J - 1
Next
ChangeLU = DXJE
End Function
注意:函数的调用参数小写金额要求必须是文本型,而且一定要有两位小数。
4 函数的应用
函数在Excel应用程序定义之后,就可以像内部函数一样调用。比如,在任意一个工作表的B3单元格输出公式“=changeLu(A3)”,然后用填充句柄向下填充若干行,只要在A列输入小写金额,B列会立即显示对应的大写金额。(注意:A列单元格的格式要设置为“数字作为文本处理”,输入的数值要带有两位小数。)
[参考文献]
[1] 李政.Office XP 编程基础与开发实例[M].北京:国防工业出版社,2001,(10).