Public Class DX_RMB
Public Shared Function DX_RMB(ByVal nNum As String) As String
Dim i, cNum, dx_num, rmb, temp, c1, c2
If nNum < 1000000000000 Then '共12个0,亿亿级
cNum = Trim(CStr(nNum)) '先转化为正数后再转化为数字字符串
i = InStr(1, cNum, ".")
If i > 0 Then
'存在小数部分时
cNum = cNum + "00"
cNum = Mid(cNum, 1, i - 1) & Mid(cNum, i + 1, 2) '取小数点后2位数字
Else
'不存在小数部分时
cNum = cNum & "00"
End If
dx_num = ""
For i = 1 To Len(cNum)
dx_num = Mid("零壹贰叁肆伍陆柒捌玖", CInt(Mid(cNum, Len(cNum) - i + 1, 1)) + 1, 1) & Mid("分角元拾佰仟万拾佰仟亿拾佰仟", i, 1) & dx_num
Next
rmb = ""
For i = 1 To Len(dx_num) Step 2
c1 = Mid(dx_num, i, 1) '取出一个数字
If c1 = "零" Then
'若为零则特殊处理
c2 = Mid(dx_num, i + 1, 1) '取出数字后的单位,如元角分等
If Len(rmb) >= 2 Then
'若前一个数字也是"零",则取消该"零",使得不会有连续两个"零零"的情况出现
If (Right(rmb, 1) = "零") Then
temp = ""
Else
temp = "零"
End If
rmb = rmb & temp
'若正好卡在"亿万元"位上,且它的前面正好是个"零",则去"零",加"亿万元"等位数名称
If InStr(1, "亿万元", c2) > 0 And Right(rmb, 1) = "零" Then
rmb = Mid(rmb, 1, Len(rmb) - 1) '去零
If Not (Right(rmb, 1) = "亿" And c2 = "万") Then
'若"亿""万"不相连,则进行添加,否则不添加
rmb = rmb & c2
End If
End If
End If
Else
'若不为"零",则正常处理
rmb = rmb & Mid(dx_num, i, 2)
End If
Next
'取消最左边的"零"和最右边的"零"
If Mid(rmb, 1, 1) = "零" Then
rmb = Mid(rmb, 2)
End If
If Right(rmb, 1) = "零" Then
rmb = Mid(rmb, 1, Len(rmb) - 1)
End If
'若结果为空,则加上"零元"字
If rmb = "" Then
rmb = "零元"
End If
'若最后 1 位为"亿"或"万",则在其后加上一个"元"字
If Right(rmb, 1) = "亿" Or Right(rmb, 1) = "万" Then
rmb = rmb & "元"
End If
'若最后 1 位为"元",则在其后增加"整"字
If Right(rmb, 1) = "元" Then
rmb = rmb & "整"
End If
DX_RMB = rmb
Else
DX_RMB = "最大只能转换'千亿'级的金额数字!"
End If
End Function
End Class