利用取整函数与select case就可以做到嘛

解决方案 »

  1.   

    visualbasic2000: 我的英语当然"好"了,编程就.... 
      

  2.   

    OLD_VB_FAN(蓝星):请你做一个好吗?我把分全给你!
      

  3.   

    的确简单,请参考下列子程序Private Function NumToText(dblVal As Double) As String
        Static Ones(0 To 9) As String
        Static Teens(0 To 9) As String
        Static Tens(0 To 9) As String
        Static Thousands(0 To 4) As String
        Static bInit As Boolean
        Dim i As Integer, bAllZeros As Boolean, bShowThousands As Boolean
        Dim strVal As String, strBuff As String, strTemp As String
        Dim nCol As Integer, nChar As Integer    'Only handles positive values
        Debug.Assert dblVal >= 0    If bInit = False Then
            'Initialize array
            bInit = True
            Ones(0) = "zero"
            Ones(1) = "one"
            Ones(2) = "two"
            Ones(3) = "three"
            Ones(4) = "four"
            Ones(5) = "five"
            Ones(6) = "six"
            Ones(7) = "seven"
            Ones(8) = "eight"
            Ones(9) = "nine"
            Teens(0) = "ten"
            Teens(1) = "eleven"
            Teens(2) = "twelve"
            Teens(3) = "thirteen"
            Teens(4) = "fourteen"
            Teens(5) = "fifteen"
            Teens(6) = "sixteen"
            Teens(7) = "seventeen"
            Teens(8) = "eighteen"
            Teens(9) = "nineteen"
            Tens(0) = ""
            Tens(1) = "ten"
            Tens(2) = "twenty"
            Tens(3) = "thirty"
            Tens(4) = "forty"
            Tens(5) = "fifty"
            Tens(6) = "sixty"
            Tens(7) = "seventy"
            Tens(8) = "eighty"
            Tens(9) = "ninety"
            Thousands(0) = ""
            Thousands(1) = "thousand"   'US numbering
            Thousands(2) = "million"
            Thousands(3) = "billion"
            Thousands(4) = "trillion"
        End If
        'Trap errors
        On Error GoTo NumToTextError
        'Get fractional part
        strBuff = "and " & Format((dblVal - Int(dblVal)) * 100, "00") & "/100"
        'Convert rest to string and process each digit
        strVal = CStr(Int(dblVal))
        'Non-zero digit not yet encountered
        bAllZeros = True
        'Iterate through string
        For i = Len(strVal) To 1 Step -1
            'Get value of this digit
            nChar = Val(Mid$(strVal, i, 1))
            'Get column position
            nCol = (Len(strVal) - i) + 1
            'Action depends on 1's, 10's or 100's column
            Select Case (nCol Mod 3)
                Case 1  '1's position
                    bShowThousands = True
                    If i = 1 Then
                        'First digit in number (last in loop)
                        strTemp = Ones(nChar) & " "
                    ElseIf Mid$(strVal, i - 1, 1) = "1" Then
                        'This digit is part of "teen" number
                        strTemp = Teens(nChar) & " "
                        i = i - 1   'Skip tens position
                    ElseIf nChar > 0 Then
                        'Any non-zero digit
                        strTemp = Ones(nChar) & " "
                    Else
                        'This digit is zero. If digit in tens and hundreds column
                        'are also zero, don't show "thousands"
                        bShowThousands = False
                        'Test for non-zero digit in this grouping
                        If Mid$(strVal, i - 1, 1) <> "0" Then
                            bShowThousands = True
                        ElseIf i > 2 Then
                            If Mid$(strVal, i - 2, 1) <> "0" Then
                                bShowThousands = True
                            End If
                        End If
                        strTemp = ""
                    End If
                    'Show "thousands" if non-zero in grouping
                    If bShowThousands Then
                        If nCol > 1 Then
                            strTemp = strTemp & Thousands(nCol \ 3)
                            If bAllZeros Then
                                strTemp = strTemp & " "
                            Else
                                strTemp = strTemp & ", "
                            End If
                        End If
                        'Indicate non-zero digit encountered
                        bAllZeros = False
                    End If
                    strBuff = strTemp & strBuff
                Case 2  '10's position
                    If nChar > 0 Then
                        If Mid$(strVal, i + 1, 1) <> "0" Then
                            strBuff = Tens(nChar) & "-" & strBuff
                        Else
                            strBuff = Tens(nChar) & " " & strBuff
                        End If
                    End If
                Case 0  '100's position
                    If nChar > 0 Then
                        strBuff = Ones(nChar) & " hundred " & strBuff
                    End If
            End Select
        Next i
        'Convert first letter to upper case
        strBuff = UCase$(Left$(strBuff, 1)) & Mid$(strBuff, 2)
    EndNumToText:
        'Return result
        NumToText = strBuff
        Exit Function
    NumToTextError:
        strBuff = "#Error#"
        Resume EndNumToText
    End Function然后调用
    Private Sub cmdConvert_Click()
        txtResult = NumToText(Val(txtNumber))
        txtNumber.SelStart = 0
        txtNumber.SelLength = Len(txtNumber)
        txtNumber.SetFocus
    End Sub保证可以
      

  4.   

    wyo(欧亚大陆桥): 等我试一试,如果行的话一定给你100分
      

  5.   


    Public Function NumToText(dblVal As Double) As String
        
        Static Ones(0 To 9) As String
        Static Teens(0 To 9) As String
        Static Tens(0 To 9) As String
        Static Thousands(0 To 4) As String
        Static bInit As Boolean
        Dim i As Integer, bAllZeros As Boolean, bShowThousands As Boolean
        Dim strVal As String, strBuff As String, strTemp As String
        Dim nCol As Integer, nChar As Integer    'Only handles positive values
        Debug.Assert dblVal >= 0    If bInit = False Then
            'Initialize array
            bInit = True
            Ones(0) = "zero"
            Ones(1) = "one"
            Ones(2) = "two"
            Ones(3) = "three"
            Ones(4) = "four"
            Ones(5) = "five"
            Ones(6) = "six"
            Ones(7) = "seven"
            Ones(8) = "eight"
            Ones(9) = "nine"
            Teens(0) = "ten"
            Teens(1) = "eleven"
            Teens(2) = "twelve"
            Teens(3) = "thirteen"
            Teens(4) = "fourteen"
            Teens(5) = "fifteen"
            Teens(6) = "sixteen"
            Teens(7) = "seventeen"
            Teens(8) = "eighteen"
            Teens(9) = "nineteen"
            Tens(0) = ""
            Tens(1) = "ten"
            Tens(2) = "twenty"
            Tens(3) = "thirty"
            Tens(4) = "forty"
            Tens(5) = "fifty"
            Tens(6) = "sixty"
            Tens(7) = "seventy"
            Tens(8) = "eighty"
            Tens(9) = "ninety"
            Thousands(0) = ""
            Thousands(1) = "thousand"   'US numbering
            Thousands(2) = "million"
            Thousands(3) = "billion"
            Thousands(4) = "trillion"
        End If
        'Trap errors
        On Error GoTo NumToTextError
        'Get fractional part
        strBuff = "and " & Format((dblVal - Int(dblVal)) * 100, "00") & "/100"
        'Convert rest to string and process each digit
        strVal = CStr(Int(dblVal))
        'Non-zero digit not yet encountered
        bAllZeros = True
        'Iterate through string
        For i = Len(strVal) To 1 Step -1
            'Get value of this digit
            nChar = val(Mid$(strVal, i, 1))
            'Get column position
            nCol = (Len(strVal) - i) + 1
            'Action depends on 1's, 10's or 100's column
            Select Case (nCol Mod 3)
                Case 1  '1's position
                    bShowThousands = True
                    If i = 1 Then
                        'First digit in number (last in loop)
                        strTemp = Ones(nChar) & " "
                    ElseIf Mid$(strVal, i - 1, 1) = "1" Then
                        'This digit is part of "teen" number
                        strTemp = Teens(nChar) & " "
                        i = i - 1   'Skip tens position
                    ElseIf nChar > 0 Then
                        'Any non-zero digit
                        strTemp = Ones(nChar) & " "
                    Else
                        'This digit is zero. If digit in tens and hundreds column
                        'are also zero, don't show "thousands"
                        bShowThousands = False
                        'Test for non-zero digit in this grouping
                        If Mid$(strVal, i - 1, 1) <> "0" Then
                            bShowThousands = True
                        ElseIf i > 2 Then
                            If Mid$(strVal, i - 2, 1) <> "0" Then
                                bShowThousands = True
                            End If
                        End If
                        strTemp = ""
                    End If
                    'Show "thousands" if non-zero in grouping
                    If bShowThousands Then
                        If nCol > 1 Then
                            strTemp = strTemp & Thousands(nCol \ 3)
                            If bAllZeros Then
                                strTemp = strTemp & " "
                            Else
                                strTemp = strTemp & ", "
                            End If
                        End If
                        'Indicate non-zero digit encountered
                        bAllZeros = False
                    End If
                    strBuff = strTemp & strBuff
                Case 2  '10's position
                    If nChar > 0 Then
                        If Mid$(strVal, i + 1, 1) <> "0" Then
                            strBuff = Tens(nChar) & "-" & strBuff
                        Else
                            strBuff = Tens(nChar) & " " & strBuff
                        End If
                    End If
                Case 0  '100's position
                    If nChar > 0 Then
                        strBuff = Ones(nChar) & " hundred " & strBuff
                    End If
            End Select
        Next i
        'Convert first letter to upper case
        strBuff = UCase$(Left$(strBuff, 1)) & Mid$(strBuff, 2)
    EndNumToText:
        'Return result
        NumToText = strBuff
        Exit Function
    NumToTextError:
        strBuff = "#Error#"
        Resume EndNumToTextEnd Function
      

  6.   


    Private Function ChangNum(Num As Integer) As String
        
        Select Case Num
            Case 0
                ChangNum = "零"
            Case 1
                ChangNum = "壹"
            Case 2
                ChangNum = "贰"
            Case 3
                ChangNum = "叁"
            Case 4
                ChangNum = "肆"
            Case 5
                ChangNum = "伍"
            Case 6
                ChangNum = "陆"
            Case 7
                ChangNum = "柒"
            Case 8
                ChangNum = "捌"
            Case 9
                ChangNum = "玖"
        End SelectEnd Function
    Public Function ConvertNum2RMB(Num) As String
        
        Dim money1 As String
        Dim tn As Long
        Dim k1 As String
        Dim k2 As String
        Dim k3 As String
        Dim ST1 As String
        Dim T1 As String    If Num = 0 Then
            ConvertNum2RMB = "零圆"
            Exit Function
        End If
        
        If Num < 0 Then
            ConvertNum2RMB = "负" + ConvertNum2RMB(Abs(Num))
            Exit Function
        End If
        
        money1 = Trim(Str(Num))
        tn = InStr(money1, ".")  '小数位置
        k1 = ""
        If tn <> 0 Then
            ST1 = Right(money1, Len(money1) - tn)
            If ST1 <> "" Then
                T1 = Left(ST1, 1)
                ST1 = Right(ST1, Len(ST1) - 1)
                If T1 <> "0" Then
                    k1 = k1 + ChangNum(val(T1)) + "角"
                End If
                If ST1 <> "" Then
                    T1 = Left(ST1, 1)
                    k1 = k1 + ChangNum(val(T1)) + "分"
                End If
            End If
            ST1 = Left(money1, tn - 1)
        Else
            ST1 = money1
        End If    k2 = ""
        If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            k2 = ChangNum(val(T1)) + k2
        End If    If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k2 = ChangNum(val(T1)) + "拾" + k2
            Else
                If Left(k2, 1) <> "零" Then k2 = "零" + k2
            End If
        End If    If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k2 = ChangNum(val(T1)) + "佰" + k2
            Else
                If Left(k2, 1) <> "零" Then k2 = "零" + k2
            End If
        End If    If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k2 = ChangNum(val(T1)) + "仟" + k2
            Else
                If Left(k2, 1) <> "零" Then k2 = "零" + k2
            End If
        End If    k3 = ""
        If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            k3 = ChangNum(val(T1)) + k3
        End If
        If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k3 = ChangNum(val(T1)) + "拾" + k3
            Else
                If Left(k3, 1) <> "零" Then k3 = "零" + k3
            End If
        End If    If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k3 = ChangNum(val(T1)) + "佰" + k3
            Else
                If Left(k3, 1) <> "零" Then k3 = "零" + k3
            End If
        End If    If ST1 <> "" Then
            T1 = Right(ST1, 1)
            ST1 = Left(ST1, Len(ST1) - 1)
            If T1 <> "0" Then
                k3 = ChangNum(val(T1)) + "仟" + k3
            End If
        End If
        If Right(k2, 1) = "零" Then k2 = Left(k2, Len(k2) - 1)
        If Len(k3) > 0 Then
            If Right(k3, 1) = "零" Then k3 = Left(k3, Len(k3) - 1)
            k3 = k3 & "万"
        End If    ConvertNum2RMB = IIf(k3 & k2 = "", k1, k3 & k2 & "元" & k1)
        
    End Function