我是一个刚学vb的新手,最近单位要我开发一个票据打印程序这里碰到一个问题如何才能实现票据栏中金额栏内数据的输入,计算结果及结果转换成大写.我用的票据是十万元版的请大侠帮帮小弟.

解决方案 »

  1.   

    '*********************************************************
    '* 名称:nNumber2Chinese
    '* 功能:数值转换为人民币(汉字)
    '* 用法:nNumber2Chinese(数值)
    '*********************************************************
    Public Function Num2Chi(txtJE As Double) As String
        Dim I, K As Integer
        Dim NC, nd, ka, chrNum, strZheng As String
        Dim c1, c2, c3 As String
        Dim K1 As Integer
        Dim Zheng As String
        Dim Xiao As String
        NC = Trim(Format(txtJE, "##0.00"))
        c1 = "仟佰拾万仟佰拾亿仟佰拾万仟佰拾元"
        c2 = "角分"
        c3 = "玖捌柒陆伍肆叁贰壹"
        If NC = 0 Then
            Num2Chi = "零元整"
            Exit Function
        End If
        Num2Chi = ""
        Zheng = Mid(NC, 1, (Len(NC) - 3))
        Xiao = Mid(NC, (Len(Zheng) + 2))
        If Val(Xiao) <> 0 Then
            For I = Len(Xiao) To 1 Step -1
                chrNum = Mid(Xiao, I, 1)
                If chrNum <> 0 Then
                    Num2Chi = Mid(c2, I, 1) & Num2Chi
                    Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
                End If
            Next I
        End If
        
        K = 0
        If Val(Zheng) <> 0 Then
            Num2Chi = "元" & Num2Chi
            For I = Len(Zheng) To 1 Step -1
                If (Len(Zheng) - I) = 4 Then
                    Num2Chi = "万" & Num2Chi
                ElseIf (Len(Zheng) - I) = 8 Then
                    Num2Chi = "亿" & Num2Chi
                ElseIf (Len(Zheng) - I) = 12 Then
                    Num2Chi = "万" & Num2Chi
                End If
                chrNum = Mid(Zheng, I, 1)
                If chrNum <> 0 Then
                    If I = Len(Zheng) Then
                        Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
                    Else
                        If (Len(Zheng) - I) <> 4 And (Len(Zheng) - I) <> 8 And (Len(Zheng) - I) <> 12 Then
                            Num2Chi = Mid(c1, (Len(c1) - K), 1) & Num2Chi
                        End If
                        Num2Chi = Mid(c3, (Len(c3) - chrNum + 1), 1) & Num2Chi
                    End If
                Else
                    If Mid(Num2Chi, 1, 1) <> "元" And Mid(Num2Chi, 1, 1) <> "万" And Mid(Num2Chi, 1, 1) <> "亿" Then
                        If Mid(Num2Chi, 1, 1) <> "零" Then
                            Num2Chi = "零" & Num2Chi
                        End If
                    End If
               End If
                K = K + 1
            Next I
        End If
        If Right(Trim(Num2Chi), 1) <> "分" Then
            Num2Chi = Num2Chi & "整"
        End If
    End Function
      

  2.   

    你可以填加两个函数
    Function Captal(Amount As Currency) As String
        Dim ret$, d&, i#, t&, c%
        Const IStep = "元万亿"
        d = (Amount - Int(Amount)) * 100
        ret = CaptalDecimal(d)
        i = Int(Amount): c = 1
        Do Until i = 0
            t = i Mod 10000
            i = i \ 10000
            If t > 0 Then
                ret = Mid$(IStep, c, 1) & ret
                ret = CaptalThousand(t) & ret
            Else
                If c = 1 Then ret = Mid$(IStep, c, 1) & ret
            End If
            c = c + 1
        Loop
        Do Until Left$(ret, 1) <> "零": ret = Mid$(ret, 2): Loop
        If Len(ret) = 1 And ret = "整" Then ret = "零"
        Captal = ret
    End FunctionFunction CaptalDigit(n As Integer) As String
        Const Digit = "零壹贰叁肆伍陆柒捌玖"
        CaptalDigit = Mid$(Digit, 1 * n + 1, 1)
    End Function
      

  3.   

    你的mail
    发给你.
    我一直在用的
    绝不会转错