您的位置 电脑知识爱好者 >> 软件知识 >> EXCEL VBA自定义函数

EXCEL VBA自定义函数

电脑知识爱好者互联网本站整理2007-8-29 16:06:54
知识重点:财务、会计工作中,经常需要将用阿拉伯数字表示的货币转换为大写中文数字表示,并且要求符合中文语法。以下VBA自定义函数可以解决这个问题,在EXCEL 2003中调试通过,使用功能也正常,但并不表示..
、会计工作中,经常需要将用阿拉伯数字表示的货币转换为大写中文数字表示,并且要求符合中文语法。以下VBA自定义函数可以解决这个问题,在EXCEL 2003中调试通过,使用功能也正常,但并不表示其代码编写就是合格的、优秀的,恳请达者、方家指正并改进。 为了方便,本人在编写代码时将可转换范围限定为绝对值不大于1万亿。 Const z As String = "零", d As String = "", e As String = "亿", f As String = "拾" Const g As String = "佰", h As String = "仟" Function Dxzh(a As Variant) As String If IsNumeric(a) = False Then Dxzh = "无法转换" Else b = CStr(Int(100 * Abs(CDbl(a)) + 0.5)) If CDbl(b) > 100000000000000# Then Dxzh = "数值超限" Else Dxzh = d: c = Len(b) For i = c To 1 Step -1 Dxzh = Replace(Dxzh & Mychoose(CInt(Left(b, 1)), CInt(i)), "零零", z) b = Right(b, Len(b) - 1) Next i Dxzh = Replace(Dxzh, "零亿", e) Dxzh = Replace(Dxzh, "零万", "万") Dxzh = Replace(Dxzh, "零圆", "圆") Dxzh = Replace(Dxzh, "亿万", e) If Right(Dxzh, 1) = z Then Dxzh = Left(Dxzh, Len(Dxzh) - 1) If Dxzh = z Then Dxzh = "零圆" If Sgn(CDbl(a)) = -1 Then Dxzh = "负" & Dxzh End If End If End Function Private Function Mychoose(Temp1 As Integer, Temp2 As Integer) As String Mychoose = Choose(Temp1 + 1, z, "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖") x = Choose(Temp2, "分", "角", "圆", f, g, h, "万", f, g, h, e, f, g, h) If Temp2 Mod 4 <> 3 And Mychoose = z Then x = d Mychoose = Mychoose & x End Function 第一个自定义函数就能写得这样严谨,很难得.

参与评论
相关内容
关于我们 | 隐私政策 | 站点地图 | 站长博客|京ICP备07025396号
添加到百度搜藏 添加到百度搜藏 电脑知识爱好者Copyright ?2006-2008版权所有 我要啦免费统计