VB6 人民币小写转大写转换

 

  Option   Explicit  

Public   Function  NumberToCharacter(number  As   String As   String  
' 完成转换的主函数 
Dim  Pos_Point  As   Long   ' 记录小数点的位置 
Dim  curNum  As   String   ' 记录当前处理的数字 
Dim  zhengshu  As   String   ' 记录整数部分 
Dim  shuduan  As   String   ' 截取某一个数据段 
'
检索小数点的位置 
Pos_Point  =   InStr (number,  " . "
' 处理小数部分 
If  Pos_Point  =   0   Then  
' 没有小数点,将小数点设置在最末尾 
Pos_Point  =   Len (number) 
ElseIf   Len (number)  =  Pos_Point  Then  
' 以小数点结尾,不作处理 
ElseIf   Len (number)  =  Pos_Point  +   1   Then  
' 一位小数,直接翻译为角 
curNum  =   Right (number,  1
NumberToCharacter 
=  NumToChr(curNum)  &   " "  
ElseIf   Len (number)  =  Pos_Point  +   2   Then  
' 取第一位 
curNum  =   Right (number,  1
' 若第一位为零,则不作处理,否则译为“角” 
If  curNum  <>   " 0 "   Then  
NumberToCharacter 
=  NumToChr(curNum)  &   " "  
End   If  
' 取第二位 
curNum  =   Left ( Right (number,  2 ),  1
' 若第二为零,不作处理,否则译为“分” 
If  curNum  <>   " 0 "   Then  
NumberToCharacter 
=  NumToChr(curNum)  &   " "   &  NumberToCharacter 
End   If  
End   If  

' 处理整数 
zhengshu  =   ""  
If  Pos_Point  >   14   Then  
' 大于 9999999999999 的数据不转换 
MsgBox   " 该数据无法转换 " , vbOKOnly  +  vbInformation,  " 金额转换 "  
Exit Function  
ElseIf  Pos_Point  >   9   Then  
zhengshu 
=   " 亿 "  
' 亿位以上的部分 
shuduan  =   Left (number, Pos_Point  -   9
zhengshu 
=  shuduantoCharacter(shuduan)  &  zhengshu 
' 万位以上的部分 
shuduan  =   Right ( Left (number, Pos_Point  -   5 ),  4
zhengshu 
=  zhengshu  &  shuduantoCharacter(shuduan)  &   " "  
' 万位以下部分 
shuduan  =   Right ( Left (number, Pos_Point  -   1 ),  4
zhengshu 
=  zhengshu  &  shuduantoCharacter(shuduan)  &   " "  
ElseIf  Pos_Point  >   5   Then  
' 万位以上的部分 
shuduan  =   Right ( Left (number, Pos_Point  -   5 ),  4
zhengshu 
=  zhengshu  &  shuduantoCharacter(shuduan)  &   " "  
' 万位以下部分 
shuduan  =   Right ( Left (number, Pos_Point  -   1 ),  4
zhengshu 
=  zhengshu  &  shuduantoCharacter(shuduan)  &   " "  
Else  
' 万位以下 
shuduan  =   Right ( Left (number, Pos_Point  -   1 ),  4
zhengshu 
=  zhengshu  &  shuduantoCharacter(shuduan)  &   " "  
End   If  
NumberToCharacter 
=  zhengshu  &  NumberToCharacter 
' 输入为“0”,特殊处理 
If  NumberToCharacter  =   " "   Then  
NumberToCharacter 
=   " 零圆 "  
End   If  

End Function  

Public   Function  NumToChr(num  As   String As   String  
' 数字转化为对应的中文 
Select   Case  num 
Case   " 1 "  
NumToChr 
=   " "  
Case   " 2 "  
NumToChr 
=   " "  
Case   " 3 "  
NumToChr 
=   " "  
Case   " 4 "  
NumToChr 
=   " "  
Case   " 5 "  
NumToChr 
=   " "  
Case   " 6 "  
NumToChr 
=   " "  
Case   " 7 "  
NumToChr 
=   " "  
Case   " 8 "  
NumToChr 
=   " "  
Case   " 9 "  
NumToChr 
=   " "  
Case   " 0 "  
NumToChr 
=   " "  
End   Select  
End Function  

' 对分节后的每一节数据进行翻译, 
'
例如: 1234512341234被分为12345,1234,1234 
Public   Function  shuduantoCharacter(duan  As   String As   String  
Dim  curNum  As   String  
Dim  answer  As   String  
answer 
=   ""  
If   Len (duan)  =   5   Then  
' 有万位 
answer  =  NumToChr( Left (duan,  1 ))  &   " "  
' 千位 
curNum  =   Right ( Left (duan,  2 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
answer 
=  answer  &   " "  
End   If  
' 百位 
curNum  =   Right ( Left (duan,  3 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
If   Right (answer,  1 <>   " "   Then  
answer 
=  answer  &   " "  
End   If  
End   If  
' 十位 
curNum  =   Right ( Left (duan,  4 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
If   Right (answer,  1 <>   " "   Then  
answer 
=  answer  &   " "  
End   If  
End   If  
' 个位 
curNum  =   Right (duan,  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum) 
Else  
If   Right (answer,  1 =   " "   Then  
answer 
=   Left (answer,  Len (answer)  -   1
End   If  
End   If  
ElseIf   Len (duan)  =   4   Then  
' 有千位 
answer  =  NumToChr( Left (duan,  1 ))  &   " "  
' 百位 
curNum  =   Left ( Right (duan,  3 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
If   Right (answer,  1 <>   " "   Then  
answer 
=  answer  &   " "  
End   If  
End   If  
' 十位 
curNum  =   Left ( Right (duan,  2 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
If   Right (answer,  1 <>   " "   Then  
answer 
=  answer  &   " "  
End   If  
End   If  
' 个位 
curNum  =   Right (duan,  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum) 
Else  
If   Right (answer,  1 =   " "   Then  
answer 
=   Left (answer,  Len (answer)  -   1
End   If  
End   If  
ElseIf   Len (duan)  =   3   Then  
' 有百位 
answer  =  NumToChr( Left (duan,  1 ))  &   " "  
' 十位 
curNum  =   Left ( Right (duan,  2 ),  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum)  &   " "  
Else  
If   Right (answer,  1 <>   " "   Then  
answer 
=  answer  &   " "  
End   If  
End   If  
' 个位 
curNum  =   Right (duan,  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum) 
Else  
If   Right (answer,  1 =   " "   Then  
answer 
=   Left (answer,  Len (answer)  -   1
End   If  
End   If  
ElseIf   Len (duan)  =   2   Then  
' 有十位 
answer  =  NumToChr( Left (duan,  1 ))  &   " "  
' 个位 
curNum  =   Right (duan,  1
If  curNum  <>   " 0 "   Then  
answer 
=  answer  &  NumToChr(curNum) 
Else  
If   Right (answer,  1 =   " "   Then  
answer 
=   Left (answer,  Len (answer)  -   1
End   If  
End   If  
ElseIf   Len (duan)  =   1   Then  
' 有个位 
answer  =  NumToChr( Left (duan,  1 )) 
End   If  
shuduantoCharacter 
=  answer 

End Function
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数字人民币大写代码 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、付费专栏及课程。

余额充值