[原创]数字转换中文大写金额
程序需要:2控件:
text1
command1
command1下代码:
On Error Resume Next
If InStr(Text1, ".") > 1 Then Exit Sub
If Right(Text1, 1) = "." Then Text1.Text = Left(Text1, Len(Text1) - 1
b = "亿万仟佰拾兆万仟佰拾亿仟佰拾万仟佰拾元"
If InStr(Text1, ".") = 0 Then '如果没有小数点的时候的处理办法
For i = 0 To Len(Text1) '先把数字全部转换成中文大写字符
Text1.Text = Replace(Text1.Text, "0", "零")
Text1.Text = Replace(Text1.Text, "1", "壹")
Text1.Text = Replace(Text1.Text, "2", "贰")
Text1.Text = Replace(Text1.Text, "3", "叁")
Text1.Text = Replace(Text1.Text, "4", "肆")
Text1.Text = Replace(Text1.Text, "5", "伍")
Text1.Text = Replace(Text1.Text, "6", "陆")
Text1.Text = Replace(Text1.Text, "7", "柒")
Text1.Text = Replace(Text1.Text, "8", "捌")
Text1.Text = Replace(Text1.Text, "9", "玖")
Next i
a = Len(Text1) '整数长度
c = Right(b, a) '提取单位长度
For i = 1 To Len(Text1) '循环结合起来
d = d & Mid(Text1, i, 1) & Mid(c, i, 1)
Next i
Text1.Text = d
For i = 0 To Len(Text1) '该循环去除“零拾零佰”等不符合中文读法的字符
Text1.Text = Replace(Text1.Text, "零拾", "零")
Text1.Text = Replace(Text1.Text, "零佰", "零")
Text1.Text = Replace(Text1.Text, "零仟", "零")
Text1.Text = Replace(Text1.Text, "零万", "万")
Text1.Text = Replace(Text1.Text, "零亿", "亿")
Text1.Text = Replace(Text1.Text, "零兆", "兆")
Text1.Text = Replace(Text1.Text, "零元", "元")
Text1.Text = Replace(Text1.Text, "兆万", "兆")
Text1.Text = Replace(Text1.Text, "兆亿", "兆")
Text1.Text = Replace(Text1.Text, "亿万", "亿")
Text1.Text = Replace(Text1.Text, "零零", "零")
Next i
End If
If InStr(Text1, ".") <> 0 Then '若有小数点的时候的处理办法
Text1 = Round(Val(Text1.Text) + 0.001, 2)
For i = 0 To Len(Text1) '先把数字全部转换成中文大写字符
Text1.Text = Replace(Text1.Text, "0", "零")
Text1.Text = Replace(Text1.Text, "1", "壹")
Text1.Text = Replace(Text1.Text, "2", "贰")
Text1.Text = Replace(Text1.Text, "3", "叁")
Text1.Text = Replace(Text1.Text, "4", "肆")
Text1.Text = Replace(Text1.Text, "5", "伍")
Text1.Text = Replace(Text1.Text, "6", "陆")
Text1.Text = Replace(Text1.Text, "7", "柒")
Text1.Text = Replace(Text1.Text, "8", "捌")
Text1.Text = Replace(Text1.Text, "9", "玖")
Text1.Text = Replace(Text1.Text, ".", "元")
Next i
aa = InStr(Text1, "元") '记录小数点的位置 准备分离出整数部分和小数部分
bb = Left(Text1, aa - 1) '提取整数
cc = Mid(Text1, aa + 1, 2)
a = Len(bb) '整数长度
c = Right(b, a) '提取单位长度
For i = 1 To Len(bb) '循环结合起来
d = d & Mid(bb, i, 1) & Mid(c, i, 1)
Next i
If Len(cc) = 2 Then Text1 = d & Left(cc, 1) & "角" & Right(cc, 1) & "分"
If Len(cc) = 1 Then Text1 = d & Left(cc, 1) & "角"
For i = 0 To Len(Text1) '该循环去除“零拾零佰”等不符合中文读法的字符
Text1.Text = Replace(Text1.Text, "零拾", "零")
Text1.Text = Replace(Text1.Text, "零佰", "零")
Text1.Text = Replace(Text1.Text, "零仟", "零")
Text1.Text = Replace(Text1.Text, "零万", "万")
Text1.Text = Replace(Text1.Text, "零亿", "亿")
Text1.Text = Replace(Text1.Text, "零兆", "兆")
Text1.Text = Replace(Text1.Text, "零元", "元")
Text1.Text = Replace(Text1.Text, "兆万", "兆")
Text1.Text = Replace(Text1.Text, "兆亿", "兆")
Text1.Text = Replace(Text1.Text, "亿万", "亿")
Text1.Text = Replace(Text1.Text, "零零", "零")
Text1.Text = Replace(Text1.Text, "零角", "零")
Next i
End If
End Sub
==============我是分割线==================
复制代码后按F5看效果
==============我是分割线==================
程序思路:
以文本框内的数字为依据
1.先把数字用Replace[替换函数]替换成中文的大写
2.按照小数点的位置 把单位“个十百千万....”分别结合起来
3.处理关于“零”这个特殊数字的读法问题,防止出现“100=壹佰零壹拾零元”的情况发生
=======================
注意问题:
1.应该先判断是否有小数点 把有小数点的数和没小数点的分开处理比较好