分享

066.小写人民币转大写人民币

 河山之家 2022-12-09 发布于新疆

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多