?? cmoney.bas
字號(hào):
Attribute VB_Name = "CMoney"
'名稱(chēng): Num2Money
' 得到數(shù)字 nMoney 的漢字大寫(xiě)
'范圍: 只受貨幣型變量大小的限制,超過(guò)則自動(dòng)截取范圍內(nèi)的數(shù)值
' O 返回 ""
Public Function Num2Money(ByVal nMoney As Currency) As String
Dim strMoney, strDec, strInt, cNum As String
Dim locDec, i, j As Integer '小數(shù)點(diǎn)位置
Dim d(4) As String '元以下的單位
Dim t(3) As String '萬(wàn)以下的單位
Dim w(3) As String '階符
Dim n(9) As String '數(shù)字
Dim s(4) As String '用以保存臨時(shí)轉(zhuǎn)化后的值
d(0) = "": d(1) = "角": d(2) = "分": d(3) = "厘": d(4) = "毫"
t(0) = "": t(1) = "十": t(2) = "百": t(3) = "千"
w(0) = "": w(1) = "元": w(2) = "萬(wàn)": w(3) = "億"
n(0) = "零": n(1) = "壹": n(2) = "貳": n(3) = "叁": n(4) = "肆":
n(5) = "伍": n(6) = "陸": n(7) = "柒": n(8) = "捌": n(9) = "玖"
If nMoney = 0 Then '為"0"則退出
Num2Money = vbNullString
Exit Function
End If
If nMoney < 0 Then '為負(fù)則遞歸求解
Num2Money = "負(fù)" + Num2Money(Abs(nMoney))
Exit Function
End If
strMoney = Trim(Str(nMoney))
locDec = InStr(strMoney, ".") '小數(shù)點(diǎn)位置
s(0) = ""
If locDec > 0 Then
strDec = Right(strMoney, Len(strMoney) - locDec)
If strDec <> "" Then '轉(zhuǎn)化小數(shù)部分
For i = 1 To Len(strDec)
cNum = Left(strDec, 1)
strDec = Right(strDec, Len(strDec) - 1)
If cNum <> "0" Then
s(0) = s(0) & n(Val(cNum)) & d(i)
Debug.Print s(0)
End If
Next
End If
strInt = Left(strMoney, locDec - 1) '取整數(shù)部分的值
Else
strInt = strMoney
End If
'考慮到VB中貨幣型變量的范圍,不超過(guò) "1000萬(wàn)億". & _
(-922,337,203,685,477.5808 ~ 922,337,203,685,477.5807)
For i = 0 To Len(strInt) / 4 '每4個(gè)數(shù)字一組進(jìn)行轉(zhuǎn)換
s(i + 1) = ""
For j = 0 To 3
If strInt <> "" Then
cNum = Right(strInt, 1) '取末位數(shù)
strInt = Left(strInt, Len(strInt) - 1)
If cNum <> "0" Then '不為零則加單位
s(i + 1) = n(Val(cNum)) & t(j) & s(i + 1)
Else
s(i + 1) = n(Val(cNum)) & s(i + 1)
End If
Debug.Print s(i + 1)
End If '刪除重復(fù)的"零"
s(i + 1) = Replace(s(i + 1), "零零", "零")
Next
Debug.Print Right(s(i + 1), 1)
If Right(s(i + 1), 1) = "零" Then '刪除末位的"零"
s(i + 1) = Left(s(i + 1), Len(s(i + 1)) - 1)
End If
Debug.Print s(i + 1)
Next
Num2Money = ""
For i = 0 To 2 '連接整數(shù)位
Num2Money = Num2Money & s(3 - i) & IIf(Trim(s(3 - i)) = vbNullString, vbNullString, w(3 - i))
Next
'加上"元"
If Trim(Num2Money) <> vbNullString And Right(Num2Money, 1) <> "元" Then
Num2Money = Num2Money & "元"
End If
'若無(wú)小數(shù)則加應(yīng)加上"整"
If Trim(s(0)) = vbNullString Then
Num2Money = Num2Money & "整"
Else
Num2Money = Num2Money & s(0)
End If
End Function
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -