阙辉

阿拉伯数字转换为英文 作者:阙辉

 

 

 文件分享

链接:https://pan.baidu.com/s/1rO3kseI3bUlxsUJnBLcStQ
提取码:ue2z

主函数

 

 

Function 阙辉_阿拉伯数字转英文(阙辉_阿拉伯数字)
Dim qh_Cardinal_number, qh_i, qh_yu_shu, qh_shang_shu As Long
'Dim qh_Cardinal_number00
Dim qh_shu01 As String
Dim qh_chang As Long
Dim qh_Cardinal_number_Array
Dim qh_tou_number, qh_zhuan_number As String
Dim qh_eng_nuber As String

'qh_Cardinal_number_Array基数词的基本组成单词  阙辉
qh_Cardinal_number_Array = Array("one", "two", "three", "four", "five", _
                                 "six", "seven", "eight", "nine", "ten", _
                                 "eleven", "twelve", "thirteen", "fourteen", "fifteen", _
                                 "sixteen", "seventeen", "eighteen", "nineteen", "twenty", _
                                 "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", _
                                 "hundred", "thousand", "million", "billion", "trillion")


qh_Cardinal_number = 阙辉_阿拉伯数字

qh_chang = Len(Str(qh_Cardinal_number)) - 1
qh_i = 0
For i = 1 To qh_chang
   aa = Right(Left(Str(qh_Cardinal_number), i), 1)
    If Right(Left(Str(qh_Cardinal_number), i), 1) = "." Then
        qh_shu01 = "是小数_阙辉"
        qh_i = qh_i + 1
    End If
Next

If qh_shu01 = "是小数_阙辉" Then
    '待开发  阙辉
    阙辉_阿拉伯数字转英文 = "待开发  阙辉"
    Exit Function
Else
'    qh_Cardinal_number = CLng(阙辉_阿拉伯数字)
    qh_Cardinal_number = 阙辉_阿拉伯数字
    qh_chang = Len(Str(qh_Cardinal_number)) - 1
    qh_yu_shu = qh_chang Mod 3                  '整除求余数  阙辉
    qh_shang_shu = (qh_chang - qh_yu_shu) / 3   '整除求商数  阙辉
    
    If qh_chang <= 3 Then
        qh_eng_nuber = 阙辉_三位以下(qh_Cardinal_number)
        阙辉_阿拉伯数字转英文 = qh_eng_nuber
        Exit Function
    ElseIf qh_chang > 3 And qh_yu_shu > 0 Then
        aa = Left(Str(qh_Cardinal_number), qh_yu_shu + 1)
        qh_tou_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1), qh_yu_shu)
        qh_tou_number = 阙辉_三位以下(qh_tou_number)
    End If
        
    Select Case qh_shang_shu
        Case 1
            If qh_tou_number = "" Then
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
            Else
                qh_eng_nuber = qh_tou_number & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)

                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            End If
        Case 2
            If qh_tou_number = "" Then
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                qh_eng_nuber = 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            Else
                qh_eng_nuber = qh_tou_number & " " & qh_Cardinal_number_Array(30 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            End If
        Case 3
            If qh_tou_number = "" Then
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                qh_eng_nuber = 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(30 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 9), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            Else
                qh_eng_nuber = qh_tou_number & " " & qh_Cardinal_number_Array(31 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(30 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 9), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            End If
        Case 4
            If qh_tou_number = "" Then
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                qh_eng_nuber = 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(31 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(30 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 9), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 12), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            Else
                qh_eng_nuber = qh_tou_number & " " & qh_Cardinal_number_Array(32 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 3), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(31 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 6), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(30 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 9), 3)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number) & " " & qh_Cardinal_number_Array(29 - 1)
                qh_zhuan_number = Right(Left(Str(qh_Cardinal_number), qh_yu_shu + 1 + 12), 3)
'                If 阙辉_三位以下(qh_zhuan_number) <> "" Then qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                If 阙辉_三位以下(qh_zhuan_number) <> "" Then
                    If CLng(qh_zhuan_number) > 100 Then
                        qh_eng_nuber = qh_eng_nuber & "," & 阙辉_三位以下(qh_zhuan_number)
                    Else
                        qh_eng_nuber = qh_eng_nuber & " and " & 阙辉_三位以下(qh_zhuan_number)
                    End If
                End If
            End If
    End Select

End If

阙辉_阿拉伯数字转英文 = qh_eng_nuber

End Function

次函数,主要是将三位一转 类似三位一读

 

 Function 阙辉_三位以下(阙辉_三位数)         '作者:阙辉
Dim qh_sanwei As Long
Dim qh_chang, qh_one, qh_ten, qh_ten00, qh_hundred As Long
Dim qh_eng_nb As String
Dim qh_Cardinal_number_Array

'接收函数参数   阙辉
qh_sanwei = 阙辉_三位数

'qh_Cardinal_number_Array基数词的基本组成单词  阙辉
qh_Cardinal_number_Array = Array("one", "two", "three", "four", "five", _
                                 "six", "seven", "eight", "nine", "ten", _
                                 "eleven", "twelve", "thirteen", "fourteen", "fifteen", _
                                 "sixteen", "seventeen", "eighteen", "nineteen", "twenty", _
                                 "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety", _
                                 "hundred", "thousand", "million", "billion", "trillion")

qh_chang = Len(Str(qh_sanwei)) - 1

If qh_chang > 3 Then
    阙辉_三位以下 = "超过计算范围,阙辉!"
    Exit Function
End If

If qh_chang = 3 Then
    '三位数 阙辉
    qh_ten00 = qh_sanwei Mod 100
    qh_one = qh_ten00 Mod 10
    qh_ten = (qh_ten00 - qh_one) / 10
    qh_hundred = (qh_sanwei - qh_ten00) / 100
    
    If qh_hundred <> 0 And qh_ten <> 0 And qh_one <> 0 And qh_ten >= 2 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1) & " and " _
                    & qh_Cardinal_number_Array(20 + qh_ten - 3) & "-" & _
                    qh_Cardinal_number_Array(qh_one - 1)
                    '01三位数 百<>0 and 十<>0 and 个<>0 and 十>20   阙辉
    ElseIf qh_hundred <> 0 And qh_ten <> 0 And qh_one <> 0 And qh_ten < 2 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1) & " and " _
                    & qh_Cardinal_number_Array(qh_ten00 - 1)
                    '02三位数 百<>0 and 十<>0 and 个<>0 and 十<20   阙辉
    ElseIf qh_hundred <> 0 And qh_ten = 0 And qh_one = 0 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1)
                    '03三位数 百<>0 and 十=0 and 个=0    阙辉
    ElseIf qh_hundred <> 0 And qh_ten = 0 And qh_one <> 0 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1) & " and " _
                    & qh_Cardinal_number_Array(qh_one - 1)
                    '04三位数 百<>0 and 十=0 and 个<>0    阙辉
    ElseIf qh_hundred <> 0 And qh_ten <> 0 And qh_one = 0 And qh_ten > 1 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1) & " and " _
                    & qh_Cardinal_number_Array(20 + qh_ten - 3)
                    '05三位数 百<>0 and 十<>0 and 个=0 and 十>1     阙辉
    ElseIf qh_hundred <> 0 And qh_ten <> 0 And qh_one = 0 And qh_ten = 1 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_hundred - 1) & " " _
                    & qh_Cardinal_number_Array(28 - 1) & " and " _
                    & qh_Cardinal_number_Array(qh_ten00 - 1)
                    '06三位数 百<>0 and 十<>0 and 个=0  and 十=1   阙辉
    End If
ElseIf qh_chang = 2 Then
    '二位数 阙辉
    qh_one = qh_sanwei Mod 10
    qh_ten = (qh_sanwei - qh_one) / 10
    
    If qh_ten <> 0 And qh_one <> 0 And qh_ten >= 2 Then
        qh_eng_nb = qh_Cardinal_number_Array(20 + qh_ten - 3) & "-" & _
                    qh_Cardinal_number_Array(qh_one - 1)
                    '07二位数 十<>0 and 个<>0 and 十>20 阙辉
    ElseIf qh_ten <> 0 And qh_one <> 0 And qh_ten < 2 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_sanwei - 1)
                    '08二位数 十<>0 and 个<>0 and 十<20 阙辉
    ElseIf qh_ten <> 0 And qh_one = 0 And qh_ten > 1 Then
        qh_eng_nb = qh_Cardinal_number_Array(20 + qh_ten - 3)
                    '09二位数 十<>0 and 个=0 and 十>1 阙辉
    ElseIf qh_ten <> 0 And qh_one = 0 And qh_ten = 1 Then
        qh_eng_nb = qh_Cardinal_number_Array(qh_sanwei - 1)
                    '10二位数 十<>0 and 个=0 and 十=1 阙辉
    End If
ElseIf qh_chang = 1 Then
    '一位数 阙辉
    qh_one = qh_sanwei
    If qh_one = 0 Then
        qh_eng_nb = ""
    Else
        qh_eng_nb = qh_Cardinal_number_Array(qh_one - 1)   '有bug
        '11 一位数 阙辉
    End If
End If

阙辉_三位以下 = qh_eng_nb

End Function

posted on 2019-11-14 11:40  真辉辉  阅读(537)  评论(0)    收藏  举报

导航