计算机vb大小写字母转换,VB 金额大小写转换(两种方法)

本文介绍了一个将阿拉伯数字转换成汉字大写金额的程序模块。该模块适用于财务或银行系统中金额显示的需求,能够准确地将数值转换为符合中文书写习惯的大写金额形式。

' 本模块生成汉字大写的金额

'OptionExplicit' 名称: CCh

' 得到一位数字 N1 的汉字大写

' 0 返回 ""FunctionCCh(N1)As String

Select CaseN1Case0CCh ="零"Case1CCh ="壹"Case2CCh ="贰"Case3CCh ="叁"Case4CCh ="肆"Case5CCh ="伍"Case6CCh ="陆"Case7CCh ="柒"Case8CCh ="捌"Case9CCh ="玖"End Select

End Function'()Function

'名称: ChMoney

' 得到数字 N1 的汉字大写

' 最大为 千万位

' O 返回 ""Public FunctionChMoney(N1)As String

DimtMoneyAs String

DimlMoneyAs String

Dimtn'小数位置DimST1As String

DimT1As String

Dims1As String'临时STRING 小数部分Dims2As String'1000 以内Dims3As String'10000IfN1 =0ThenChMoney =" "Exit Function

End If

IfN1 <0ThenChMoney ="负"+ ChMoney(Abs(N1))Exit Function

End IftMoney = Trim(Str(N1))

tn = InStr(tMoney,".")'小数位置s1 =""Iftn <>0ThenST1 = Right(tMoney, Len(tMoney) - tn)IfST1 <>""ThenT1 = Left(ST1,1)

ST1 = Right(ST1, Len(ST1) -1)IfT1 <>"0"Thens1 = s1 + CCh(Val(T1)) +"角"End If

IfST1 <>""ThenT1 = Left(ST1,1)

s1 = s1 + CCh(Val(T1)) +"分"End If

End IfST1 = Left(tMoney, tn -1)ElseST1 = tMoneyEnd Ifs2 =""IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)

s2 = CCh(Val(T1)) + s2End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens2 = CCh(Val(T1)) +"拾"+ s2Else

IfLeft(s2,1) <>"零"Thens2 ="零"+ s2End If

End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens2 = CCh(Val(T1)) +"佰"+ s2Else

IfLeft(s2,1) <>"零"Thens2 ="零"+ s2End If

End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens2 = CCh(Val(T1)) +"仟"+ s2Else

IfLeft(s2,1) <>"零"Thens2 ="零"+ s2End If

End Ifs3 =""IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)

s3 = CCh(Val(T1)) + s3End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens3 = CCh(Val(T1)) +"拾"+ s3Else

IfLeft(s3,1) <>"零"Thens3 ="零"+ s3End If

End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens3 = CCh(Val(T1)) +"佰"+ s3Else

IfLeft(s3,1) <>"零"Thens3 ="零"+ s3End If

End If

IfST1 <>""ThenT1 = Right(ST1,1)

ST1 = Left(ST1, Len(ST1) -1)IfT1 <>"0"Thens3 = CCh(Val(T1)) +"仟"+ s3End If

End If

IfRight(s2,1) ="零"Thens2 = Left(s2, Len(s2) -1)IfLen(s3) >0Then

IfRight(s3,1) ="零"Thens3 = Left(s3, Len(s3) -1)

s3 = s3 &"万"End IfChMoney = IIf(s3 & s2 ="", s1, s3 & s2 &"元整"& s1)End Function

数字转成人民币大写代码 Public Function GetChinaNum(otherNum As Double, Optional isRMB As Boolean, Optional numOption As Boolean, Optional dotNum As Integer) As String On Error Resume Next num = Trim(Str(Int(otherNum))) If isRMB Then numwei = "拾佰仟万拾佰仟亿拾佰仟" numshu = "零壹贰叁肆伍陆柒捌玖拾" Else numwei = "十百千万十百千亿十百千" numshu = "零一二三四五六七八九十" End If If otherNum < 20 And otherNum >= 10 Then num = Right(num, 1) GetChinaNum = Left(numwei, 1) End If For i = 1 To Len(num) bstr = Mid(num, i, 1) If numOption Then GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) Else GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) If bstr = "0" Then If Mid(numwei, Len(num) - i, 1) = "万" Or Mid(numwei, Len(num) - i, 1) = "亿" Then Do While Right(GetChinaNum, 1) = "零" GetChinaNum = Left(GetChinaNum, Len(GetChinaNum) - 1) Loop GetChinaNum = GetChinaNum + Mid(numwei, Len(num) - i, 1) End If Else GetChinaNum = GetChinaNum + Mid(numwei, Len(num) - i, 1) End If GetChinaNum = Replace(GetChinaNum, "零零", "零") End If Next i If numOption = False Then Do While Right(GetChinaNum, 1) = "零" GetChinaNum = Left(GetChinaNum, Len(GetChinaNum) - 1) Loop End If If isRMB Then numrmb = "元角分" GetChinaNum = GetChinaNum + Mid(numrmb, 1, 1) If Val(num) <> otherNum Then num = Trim(Str(Round(otherNum - Val(num), 2))) For i = 2 To Len(num) bstr = Mid(num, i, 1) GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) + Mid(numrmb, i, 1) Next i Else GetChinaNum = GetChinaNum + "整" End If Else If Val(num) <> otherNum Then If dotNum = 0 Then dotNum = 4 num = Trim(CStr(Round(otherNum - Val(num), dotNum))) If GetChinaNum = "" Then GetChinaNum = "零" GetChinaNum = GetChinaNum + "点" For i = 2 To Len(num) bstr = Mid(num, i, 1) GetChinaNum = GetChinaNum + Mid(numshu, Val(bstr) + 1, 1) Next i End If End If End Function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值