发布时间: 2012-12-14 10:33:07 作者: rapoo
转换数字为人民币大写的算法代码,有用的着的拿去网上找的代码都比较长,上代码:
'-------------------------------- '将双精度型数值转化为大写人民币金额 '-------------------------------- Public Function DblToCurr(ByVal ValNum As Double) Dim RetStr As String, strUnit As String, tmpStr As String Dim LenStr As Integer, i As Integer, j As Integer Dim strUnits As String, strNums As String, CurNum As Integer Dim PreZero As Boolean ' If ValNum < 0 Then ' MsgBox "金额小于零", vbInformation, "系统提示" ' End If ValNum = Abs(ValNum) If ValNum >= 1E+15 Then MsgBox "金额太大,系统不能处理!", vbInformation, "系统提示" RetStr = "零元" GoTo ReturnResult End If strNums = "零壹贰叁肆伍陆柒捌玖": strUnits = "拾百千万亿" ValNum = Int(ValNum * 100 + 0.5) / 100 tmpStr = Trim(Str(Abs(ValNum))) LenStr = Len(tmpStr) i = InStr(1, tmpStr, "."): If i = 0 Then i = LenStr + 1 RetStr = "元" RetStr = RetStr & Mid(strNums, Val(Mid(tmpStr, i + 1, 1)) + 1, 1) & "角" RetStr = RetStr & Mid(strNums, Val(Mid(tmpStr, i + 2, 1)) + 1, 1) & "分" If ValNum < 1 Then RetStr = "零" & RetStr j = 0: PreZero = False: strUnit = "" Do While i > 1 i = i - 1 CurNum = Val(Mid(tmpStr, i, 1)) If CurNum = 0 Then If j Mod 4 = 0 Then RetStr = strUnit & RetStr ElseIf PreZero = False Then RetStr = Mid(strNums, 1, 1) & RetStr End If PreZero = True Else RetStr = Mid(strNums, CurNum + 1, 1) & strUnit & RetStr PreZero = False End If j = j + 1 If j = 4 Or j = 12 Then strUnit = Mid(strUnits, 4, 1) PreZero = False ElseIf j = 8 Then strUnit = Mid(strUnits, 5, 1) PreZero = False Else strUnit = Mid(strUnits, j Mod 4, 1) End If Loop ReturnResult: DblToCurr = RetStr End Function
ElseIf j = 8 Then strUnit = Mid(strUnits, 5, 1) PreZero = False Else strUnit = Mid(strUnits, j Mod 4, 1) End If Loop ReturnResult: DblToCurr = RetStr End Function
怎么中止数据上传
VB 图像中数目字识别有什么办法?(
请教哪位高手知道下面的是什么编码吗?
怎样用VBA杀掉系统里的某个程序过程呢
资源推荐:代码自动生成、Com开发、串
vb.net中怎的获取日期中的年月日时分秒
VBA中无法打印ASCII值超过128~255之间
VBA怎的访问到文件夹里的每个文件
RtlRandom 的用法?该怎么解决
求个正则表达式,把字符串中除了数字和