⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modalphanumber.bas

📁 企业ERP系统 采用VB+SQL2000实现。 有客户合约
💻 BAS
字号:
Attribute VB_Name = "modAlphaNumber"
Option Explicit
'数字转英文金额
Dim English_arr(90) As String
Dim b_dim As String
Dim q_dim As String
Dim bw_dim As String

        
Public Function AlphaNumber(ByVal curValue As Currency) As String
        English_arr(1) = "ONE"
        English_arr(2) = "TWO"
        English_arr(3) = "THREE"
        English_arr(4) = "FOUR"
        English_arr(5) = "FIVE"
        English_arr(6) = "SIX"
        English_arr(7) = "SEVEN"
        English_arr(8) = "EIGHT"
        English_arr(9) = "NINE"
        English_arr(10) = "TEN"
        English_arr(11) = "ELEVEN"
        English_arr(12) = "TWELVE"
        English_arr(13) = "THIRTEEN"
        English_arr(14) = "FOURTEEN"
        English_arr(15) = "FIFTEEN"
        English_arr(16) = "SIXTEEN"
        English_arr(17) = "SEVENTEE"
        English_arr(18) = "EIGHTEEN"
        English_arr(19) = "NINETEEN"
        English_arr(20) = "TWENTY"
        English_arr(30) = "THIRTY"
        English_arr(40) = "FORTY"
        English_arr(50) = "FIFTY"
        English_arr(60) = "SIXTY"
        English_arr(70) = "SEVENTY"
        English_arr(80) = "EIGHTY"
        English_arr(90) = "NINETY"
        b_dim = "HUNDRED"        '百
        q_dim = "THOUSAND"       '千
        bw_dim = "MILLION"       '百万
        
'获取输入字串
Dim text_dim As String
text_dim = curValue
Dim zs_dim As String '装整数
Dim xs_dim As String '装小数
zs_dim = ""
xs_dim = "" '装翻译好的英语单词
Dim fy_dim As String
fy_dim = "" '首先判断输入的数据是否为数字
If IsNumeric(text_dim) Then        '判断字串中是否包含小数
        Dim xsd_dim As Integer '装小数点位置
        xsd_dim = InStr(text_dim, ".")
    
        If xsd_dim <> 0 Then
        
            '整数部分不能超过9
            If Len(Left(text_dim, xsd_dim - 1)) > 9 Then
                MsgBox "注意整数部分不能超过9位,否则我不懂的翻!!!", 0 + 16, "提示"
            Else
                zs_dim = Left(text_dim, xsd_dim - 1)
            End If
        
            '小数部分不能超过2位,否则自动截取
            xs_dim = Mid(text_dim, xsd_dim + 1, 2)
            If Len(Mid(text_dim, xsd_dim + 1)) > 2 Then
                MsgBox "注意小数部分不能超过2位,否则我不懂的翻,所以我自动截留两位!!!", 0 + 16, "提示"
                curValue = zs_dim & "." & xs_dim
            End If
         
        
        Else
        
            '整数部分不能超过9
            If Len(text_dim) > 9 Then
                MsgBox "注意整数部分不能超过9位,否则我不懂的翻!!!", 0 + 16, "提示"
            Else
                zs_dim = text_dim
            End If
        
        End If
    
        '开始翻译了,将整数部分不足9位的,前面补足0
        zs_dim = String(9 - Len(zs_dim), "0") & zs_dim
    
        '将9位整数拆分为三组,每组3个数字,然后用翻译函数译出3个基本数再用相关量词联接
        '呵呵,这里涉及到英语翻译的知识了,本人英语极差,所以不肯造次,就不多说了
        If fy_sub(Left(zs_dim, 3)) <> "" Then
            fy_dim = fy_sub(Left(zs_dim, 3)) & " " & bw_dim & " "
        End If
    
        If fy_sub(Mid(zs_dim, 4, 3)) <> "" Then
            fy_dim = fy_dim & fy_sub(Mid(zs_dim, 4, 3)) & " " & q_dim & " "
        End If
    
        If fy_sub(Mid(zs_dim, 7, 3)) <> "" Then
            fy_dim = fy_dim & fy_sub(Mid(zs_dim, 7, 3)) & " "
        End If
    
    
        '翻译小数位
        If xs_dim <> "" Then
            If Len(xs_dim) = 1 Then      '如果只有一个小数位,则在后面补一个0
                xs_dim = xs_dim & "0"
            End If
        
            If fy_sub("0" & xs_dim) <> "" Then
                fy_dim = fy_dim & "AND CENTS " & fy_sub("0" & xs_dim)
            End If
        End If
    
        AlphaNumber = fy_dim
Else
        MsgBox "请注意,必须输入有效数字!!!", 0 + 16, "提示"
End If
End Function '此函数功能是将最基本的翻译元素,即将需要翻译的数字截成3个一组的元素,然后翻译这三个基本元素.
Private Function fy_sub(ys As String)
        Dim ys_dim As String       '装需要翻译的字符
        Dim fy_dim As String       '用于装翻译好的英文
        ys_dim = ys
        fy_dim = ""
    
        If ys_dim = "000" Then       '如果参数为"000",则表示这个元素段是空的,不需要翻译,直接返回空字符
            fy_sub = ""
        Else
            '将元素分解成单个的数字
            Dim s1_dim As Integer
            Dim s2_dim As Integer
            Dim s3_dim As Integer
        
            s1_dim = CInt(Left(ys_dim, 1))
            s2_dim = CInt(Mid(ys_dim, 2, 1))
            s3_dim = CInt(Mid(ys_dim, 3, 1))
        
            If s1_dim <> 0 Then      '如果第一个数字不为0,则读入相对应的英文单词
                fy_dim = English_arr(s1_dim) & " " & b_dim & " "
            End If
        
            If s2_dim <> 0 Then
                If s2_dim = 1 Then      '如果数2等于1,则读入从10-19的相对应的英文单词
                    fy_dim = fy_dim & English_arr(CInt(CStr(s2_dim) & CStr(s3_dim)))
                Else
                    fy_dim = fy_dim & English_arr(CInt(CStr(s2_dim) & "0"))
                    If s3_dim <> 0 Then
                        fy_dim = fy_dim & "-"
                    End If
                End If
            End If
        
            If s3_dim <> 0 Then      '如果数3不等0,并且数2不等于1,则读入相应的英文单词
                If s2_dim <> 1 Then
                    fy_dim = fy_dim & English_arr(s3_dim)
                End If
            End If
        
            fy_sub = fy_dim
        End If
End Function


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -