Result = ""
If Number = 0 Then
If IsMoney Then
Result = strNum(0) & strUnit(0) & "整"
Else
Result = strNum(0)
End If
Else
If IsMoney Then
strNumber = Trim(str(FormatCurrency(Number, 2, vbTrue, vbFalse, vbFalse))) '保留两位小数
Else
strNumber = Trim(str(Number)) '简单的转换为字符串型
End If
lngNumberLen = Len(strNumber)
If Left(strNumber, 1) = "-" Then '处理负数
strFirst = "负"
strNumber = Right(strNumber, lngNumberLen - 1)
lngNumberLen = lngNumberLen - 1
Else
strFirst = "" '通常不需要 =""
End If
lngI = InStrRev(strNumber, ".")
If lngI Then
strTmp = Right(strNumber, lngNumberLen - lngI)
If IsMoney Then
strTmp = strTmp & "00"
strEnd = "" '通常不需要 =""
For lngJ = 1 To 2
Result = Result & strNum(CLng(Mid$(strTmp, lngJ, 1))) & strUnitB(lngJ - 1)
Next
Else
strTmp = Right(strNumber, lngNumberLen - lngI)
For lngJ = 1 To lngNumberLen - lngI
Result = Result & strNum(CLng(Mid$(strTmp, lngJ, 1)))
Next
End If
strNumber = Left(strNumber, lngI - 1) '去除小数部分
lngNumberLen = Len(strNumber) '新的字符串长度
Else
If IsMoney Then
strEnd = "整"
Else
strEnd = ""
End If
End If
'以下为主循环部分
lngI = 0
For lngJ = lngNumberLen To 1 Step -1
lngTmp = CLng(Mid$(strNumber, lngJ, 1))
If lngTmp Then
Result = strNum(lngTmp) & strUnit(lngI) & Result
Else
If lngI = 0 Or lngI = 4 Or lngI = 8 Or lngI = 12 Then '超过 16 位不支持
Result = strNum(lngTmp) & strUnit(lngI) & Result
Else
Result = strNum(lngTmp) & Result
End If
End If
lngI = lngI + 1
Next
Result = Replace(Result, strNum(0) & strNum(0), strNum(0)) '零零", "零
Result = Replace(Result, strNum(0) & strNum(0), strNum(0)) '零零", "零
Result = Replace(Result, strNum(0) & strUnit(8), strUnit(8)) '零亿
Result = Replace(Result, strNum(0) & strUnit(4), strUnit(4)) '零万
Result = Replace(Result, strNum(0) & strUnit(0), strUnit(0)) '零圆
Result = Replace(Result, strNum(0) & strNum(0), strNum(0)) '零零", "零
Result = Replace(Result, strNum(0) & strNum(0), strNum(0)) '零零", "零
If IsMoney Then
Result = strFirst & Result & strEnd
Else
If Right(Result, 1) = strUnit(0) Then Result = Left(Result, Len(Result) - 1) '去除最后一个 "点"
End If
End If
Complete:
GoTo Quit
Doerr:
Errexit:
Result = ""
Quit:
UpNumber = Result
End Function