将数字串转换为中文金额字符串

 '*************************************************************************************************************

    Public Function ConvCap(ByVal valstr) As String
        ConvCap = Choose(Val(valstr) + 1, "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖")
    End Function
    '**************************************************************************
    '函数用途:将数字串转换为中文金额字符串
    '入口参数:Digital 要转换的数字串
    '返回参数:中文金额字符串
    '限制:Digital小于1亿
    '*************************************************************************
    Public Function ConvToMoney(ByVal Digital As String) As String
        Dim strChi(11), strDig(10) As String
        Dim stmp, rsStr As String
        Dim lenStr As Byte
        Dim laststr As String
        'Dim DigiToChi As String


        If Not IsNumeric(Digital) Then
            ConvToMoney = ""
            Exit Function
        End If

        If Val(Format(Digital)) < 0 Then
            Digital = Trim(Str(Abs(Val(Format(Digital)))))
            laststr = "整(负)"
        Else
            laststr = "整"
        End If

        strChi(0) = "分"
        strChi(1) = "角"
        strChi(2) = "元"
        strChi(3) = "拾"
        strChi(4) = "佰"
        strChi(5) = "仟"
        strChi(6) = "万"
        strChi(7) = "拾"
        strChi(8) = "佰"
        strChi(9) = "仟"
        strChi(10) = "亿"
        strDig(0) = "零"
        strDig(1) = "壹"
        strDig(2) = "贰"
        strDig(3) = "叁"
        strDig(4) = "肆"
        strDig(5) = "伍"
        strDig(6) = "陆"
        strDig(7) = "柒"
        strDig(8) = "捌"
        strDig(9) = "玖"
        Dim DigiToChi As String
        stmp = Digital
        If (Len(stmp) = 0) Or (Len(stmp) > 11) Then
            DigiToChi = ""
            Exit Function
        End If
        stmp = Format(stmp, "########.00")
        If Len(stmp) > 11 Then
            DigiToChi = ""
            Exit Function
        End If

        lenStr = Len(stmp)


        rsStr = strDig(Val(Mid(stmp, lenStr - 1, 1))) & strChi(1) & strDig(Val(Right(stmp, 1))) & strChi(0)
        stmp = Left(stmp, Len(stmp) - 3)
        Dim I, d As Byte
        Dim blnZero As Boolean
        Dim stmprv, dstr As String

        For I = 1 To Len(stmp)
            stmprv = Mid(stmp, I, 1) & stmprv
        Next

        For I = 1 To Len(stmprv)
            d = Val(Mid(stmprv, I, 1))
            If d = 0 Then
                If I = 1 Or I = 5 Then
                    dstr = strChi(I + 1)
                Else
                    If Not blnZero Then
                        dstr = strDig(0)
                    Else
                        dstr = ""
                    End If
                End If
                blnZero = True
            Else
                dstr = strDig(d) & strChi(I + 1)
                blnZero = False
            End If
            rsStr = dstr + rsStr
        Next
        ConvToMoney = rsStr & laststr
    End Function

    Public Function GetBitStr(ByVal valstr As String, ByVal pos As Integer) As String
        Select Case pos
            Case 1
                GetBitStr = ConvCap(valstr) + "元"
            Case 2
                GetBitStr = ConvCap(valstr) + "拾"
            Case 3
                GetBitStr = ConvCap(valstr) + "百"
            Case 4
                GetBitStr = ConvCap(valstr) + "千"
            Case 5
                GetBitStr = ConvCap(valstr) + "万"
            Case 6
                GetBitStr = ConvCap(valstr) + "十万"
            Case 7
                GetBitStr = ConvCap(valstr) + "百万"
            Case 8
                GetBitStr = ConvCap(valstr) + "千万"
            Case 9
                GetBitStr = ConvCap(valstr) + "亿"
            Case -1
                GetBitStr = ConvCap(valstr) + "角"
            Case -2
                GetBitStr = ConvCap(valstr) + "分"
        End Select
    End Function

posted on 2006-08-27 21:26  奇远  阅读(370)  评论(0编辑  收藏  举报

导航