Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

数字转英文自定义函数

时 间:2005-10-29 19:34:00
作 者:海狸先生   ID:210  城市:丽水
摘 要:看了网上的一些类似自定义函数,比较长,就进行了重写
正 文:

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

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交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助