单词转换为数字向量_将数字转换为单词

单词转换为数字向量

在访问对象对话框中,单击“模块”

单击新创建一个新模块

复制以下代码,然后将其粘贴到新模块中:


Function SayNo(ByVal N As Currency) As String 
    Const Thousand = 1000@
    Const Million = Thousand * Thousand
    Const Billion = Thousand * Million
    Const Trillion = Thousand * Billion 
    If (N = 0@) Then SayNo = "zero": Exit Function 
    Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
    Dim Frac As Currency: Frac = Abs(N - Fix(N))
    If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N))
    Dim AtLeastOne As Integer: AtLeastOne = N >= 1 
    If (N >= Trillion) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(Int(N / Trillion)) & " trillion"
        N = N - Int(N / Trillion) * Trillion
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Billion) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(Int(N / Billion)) & " billion"
        N = N - Int(N / Billion) * Billion
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Million) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N \ Million) & " million"
        N = N Mod Million
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= Thousand) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N \ Thousand) & " thousand"
        N = N Mod Thousand
        If (N >= 1@) Then Buf = Buf & " "
    End If 
    If (N >= 1@) Then
        Debug.Print N
        Buf = Buf & SayNoDigitGroup(N)
    End If 
    If (Frac = 0@) Then
        Buf = Buf
    ElseIf (Int(Frac * 100@) = Frac * 100@) Then
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 100@, "00") & "/100"
    Else
        If AtLeastOne Then Buf = Buf & " and "
        Buf = Buf & Format$(Frac * 10000@, "0000") & "/10000"
    End If 
    SayNo = Buf
End Function 
Private Function SayNoDigitGroup(ByVal N As Integer) As String 
    Const Hundred = " hundred"
    Const One = "one"
    Const Two = "two"
    Const Three = "three"
    Const Four = "four"
    Const Five = "five"
    Const Six = "six"
    Const Seven = "seven"
    Const Eight = "eight"
    Const Nine = "nine"
    Dim Buf As String: Buf = ""
    Dim Flag As Integer: Flag = False 
    Select Case (N \ 100)
        Case 0: Buf = "": Flag = False
        Case 1: Buf = One & Hundred: Flag = True
        Case 2: Buf = Two & Hundred: Flag = True
        Case 3: Buf = Three & Hundred: Flag = True
        Case 4: Buf = Four & Hundred: Flag = True
        Case 5: Buf = Five & Hundred: Flag = True
        Case 6: Buf = Six & Hundred: Flag = True
        Case 7: Buf = Seven & Hundred: Flag = True
        Case 8: Buf = Eight & Hundred: Flag = True
        Case 9: Buf = Nine & Hundred: Flag = True
    End Select 
    If (Flag <> False) Then N = N Mod 100
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & " "
    Else
        SayNoDigitGroup = Buf
        Exit Function
    End If 
    Select Case (N \ 10)
        Case 0, 1: Flag = False
        Case 2: Buf = Buf & "twenty": Flag = True
        Case 3: Buf = Buf & "thirty": Flag = True
        Case 4: Buf = Buf & "forty": Flag = True
        Case 5: Buf = Buf & "fifty": Flag = True
        Case 6: Buf = Buf & "sixty": Flag = True
        Case 7: Buf = Buf & "seventy": Flag = True
        Case 8: Buf = Buf & "eighty": Flag = True
        Case 9: Buf = Buf & "ninety": Flag = True
    End Select 
    If (Flag <> False) Then N = N Mod 10
    If (N > 0) Then
        If (Flag <> False) Then Buf = Buf & "-"
    Else
        SayNoDigitGroup = Buf
        Exit Function
    End If 
    Select Case (N)
        Case 0:
        Case 1: Buf = Buf & One
        Case 2: Buf = Buf & Two
        Case 3: Buf = Buf & Three
        Case 4: Buf = Buf & Four
        Case 5: Buf = Buf & Five
        Case 6: Buf = Buf & Six
        Case 7: Buf = Buf & Seven
        Case 8: Buf = Buf & Eight
        Case 9: Buf = Buf & Nine
        Case 10: Buf = Buf & "ten"
        Case 11: Buf = Buf & "eleven"
        Case 12: Buf = Buf & "twelve"
        Case 13: Buf = Buf & "thirteen"
        Case 14: Buf = Buf & "fourteen"
        Case 15: Buf = Buf & "fifteen"
        Case 16: Buf = Buf & "sixteen"
        Case 17: Buf = Buf & "seventeen"
        Case 18: Buf = Buf & "eighteen"
        Case 19: Buf = Buf & "nineteen"
    End Select 
    SayNoDigitGroup = Buf 
End Function 
保存该模块并调用它,例如NumbersToWords

现在从您的表单使用语法调用函数

说不(您的数值)

作为一个例子(由于我不知道您的技能水平,对不起),这就是我测试的方法。 完成上述步骤后,创建了一个带有文本框和标签的简单表单; txtTextNumbers和lblTextWords


Private Sub txtTextNumbers_Exit(Cancel As Integer)
     Me.lblTextWords.Caption = SayNo(Me.txtTextNumbers.Value)
End Sub 
输入数据并退出文本框后,标签将包含与输入数字相等的词。

当然,可以在其他事件中使用相同的代码。

作者仅被我称为M8KWR。

翻译自: https://bytes.com/topic/access/insights/625202-converting-numbers-words

单词转换为数字向量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值