[原创]数字转换中文大写金额

[原创]数字转换中文大写金额

程序需要: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.应该先判断是否有小数点 把有小数点的数和没小数点的分开处理比较好

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值