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

文件分享
链接: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
浙公网安备 33010602011771号