首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

变换数字为人民币大写的算法代码,有用的着的拿去

2012-12-14 
转换数字为人民币大写的算法代码,有用的着的拿去网上找的代码都比较长,上代码:-------------------------

转换数字为人民币大写的算法代码,有用的着的拿去
网上找的代码都比较长,上代码:

'-------------------------------- 
'将双精度型数值转化为大写人民币金额 
'-------------------------------- 
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 


[解决办法]
如果考虑效率的话,不建议使用"&"来连接字符串,建议使用字符串数组,到最终的时候Join成单串.
[解决办法]
热点排行