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))) '保留兩位小數(shù) Else strNumber = Trim(str(Number)) '簡單的轉(zhuǎn)換為字符串型 End If lngNumberLen = Len(strNumber)
If Left(strNumber, 1) = "-" Then '處理負(fù)數(shù) strFirst = "負(fù)" 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) '去除小數(shù)部分 lngNumberLen = Len(strNumber) '新的字符串長度 Else If IsMoney Then strEnd = "整" Else strEnd = "" End If End If
'以下為主循環(huán)部分 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相關(guān)文章