Function DXRMB(ByVal num As String) As String Dim NumV Dim HzStr As String, Nums As String NumV = Val(num) ' If NumV < 0 Then ZfBz = "(负)" '正负数标志 NumV = Abs(NumV) '转换为绝对值 If NumV = 0 Then DXRMB = "零元" Exit Function End If If NumV >= 10000000000000# Then DXRMB = "#金额超出范围!" Exit Function End If DxSt = Split("零‐壹‐贰‐叁‐肆‐伍‐陆‐柒‐捌‐玖", "‐") '预设大写字符数组 HzStr = "万仟佰拾亿仟佰拾万仟佰拾元角分" '预设人民币字符 Nums = Trim(Str(NumV * 100)) '将数字乘 100 转换为整数 If InStr(1, Nums, ".") > 0 Then Nums = Left(Nums, InStr(1, Nums, ".") ‐ 1) NumCount = Len(Nums) '计算数字转换后的字符数 HzStr = Right(HzStr, NumCount) '提取与数字字符数相同的人民币字符 For i = 1 To NumCount StrID = Val(Mid(Nums, i, 1)) '从数字字符各数值计算出提取大写字符数组号 RmbStr = RmbStr & DxSt(StrID) & Mid(HzStr, i, 1) '提取大写字符及人民币字符进行合并 Next StrA = Split("零仟零佰零拾零万‐零仟‐零佰‐零拾‐零零‐零零‐零亿‐零万‐零零‐零零‐零元‐零角零分‐零角‐零分", "‐") '被替换的字符 StrB = Split("零^零^零^零^零^零^亿零^万零^零^零^元^整^零^整", "^") '要替换的新字符 For i = 0 To UBound(StrA) If InStr(1, RmbStr, StrA(i)) > 1 Then RmbStr = Replace(RmbStr, StrA(i),StrB(i)) '开始替换 Next i DXRMB = ZfBz & RmbStr '取得函数值 End Function |
|