数字转英文自定义函数-毛海波
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


数字转英文自定义函数

发表时间:2005/10/29 19:34:00 评论(1) 浏览(10144)  评论 | 加入收藏 | 复制
   
摘 要:看了网上的一些类似自定义函数,比较长,就进行了重写
正 文:

'说明,只支持整数,另外如有错误请提出来。

Option Explicit
Function SpellNumber(Number As Long) As String
    Dim strPlace(4) As String
    Dim strComma As String, intComma As Integer, i As Integer
    strPlace(1) = " Thousand "
    strPlace(2) = " Million "
    strPlace(3) = " Billion "
    strPlace(4) = " Trilion "
    If Number = 0 Then
        SpellNumber = "No Amount ":
        Exit Function
        For i = 0 To (Len(Str(Number)) - 2) \ 3
            intComma = Number \ 10 ^ (i * 3) Mod 1000
            Select Case intComma
            Case Is > 99
                strComma = GetDigit(intComma \ 100 Mod 10) & " Hundred And " & GetTens(intComma Mod 100)
            Case Is > 9
                strComma = "And " & GetTens(intComma Mod 100)
            Case Else: strComma = "And " & GetDigit(intComma Mod 10)
            End Select
            SpellNumber = strComma & strPlace(i Mod 5) & SpellNumber
        Next
        If Left(SpellNumber, 3) = "And" Then
            SpellNumber = Right(SpellNumber, Len(SpellNumber) - 4)
        End Function

Function GetTens(intTens As Integer) As String
Select Case intTens
Case Is > 19
   Select Case intTens \ 10
   Case 2: GetTens = "Twenty "
   Case 3: GetTens = "Thirty "
   Case 4: GetTens = "Forty "
   Case 5: GetTens = "Fifty "
   Case 6: GetTens = "Sixty "
   Case 7: GetTens = "Seventy "
   Case 8: GetTens = "Eighty "
   Case 9: GetTens = "Ninety "
   End Select
   If intTens Mod 10 <> 0 Then GetTens = GetTens & GetDigit(intTens Mod 10)
Case Is > 9
   Select Case intTens
   Case 10: GetTens = "Ten"
   Case 11: GetTens = "Eleven"
   Case 12: GetTens = "Twelve"
   Case 13: GetTens = "Thirteen"
   Case 14: GetTens = "Fourteen"
   Case 15: GetTens = "Fifteen"
   Case 16: GetTens = "Sixteen"
   Case 17: GetTens = "Seventeen"
   Case 18: GetTens = "Eighteen"
   Case 19: GetTens = "Nineteen"
   End Select
Case Else
   GetTens = (GetDigit(intTens))
End Select
End Function
Function GetDigit(Digit As Integer) As String
Select Case Digit
Case 1: GetDigit = "One"
Case 2: GetDigit = "Two"
Case 3: GetDigit = "Three"
Case 4: GetDigit = "Four"
Case 5: GetDigit = "Five"
Case 6: GetDigit = "Six"
Case 7: GetDigit = "Seven"
Case 8: GetDigit = "Eight"
Case 9: GetDigit = "Nine"
End Select
End Function


Access软件网交流QQ群(群号:198465573)
 
 相关文章
将金额数字转换汉字大写   【yuab  2004/11/10】
数字转英文自定义函数  【海狸先生  2005/10/29】
阿拉伯数字转换为罗马数字  【纵云梯  2012/2/13】
【Access示例】阿拉伯数字转中文的函数应用示例  【54.℡80後2oO  2012/7/19】
全汉字转换拼音码首字母(带:完整汉字拼音(简繁体)、全角字母数字转...  【litao  2013/9/7】
常见问答
技术分类
相关资源
文章搜索
关于作者

毛海波

文章分类

文章存档

友情链接