You are viewing limited content. For full access, please sign in.

Question

Question

How can I convert a numeric value into English words?

asked on April 17, 2018

I am looking to convert a numeric value into English words in workflow. I would like to call on a numeric token, convert it to words and create a new token with the "English word" version of the number. I have been playing around with a script I use as a macro function in Microsoft excel, although I'm not very familiar with VBA. Could someone please help?

 

The purpose of this is to pre-fill a cheque template. I would like to convert the number to words to print onto a cheque. I am open to any other alternative ideas too!

 

0 0

Answer

SELECTED ANSWER
replied on April 17, 2018

Hi Tyler,


Use the activity SCRIPT,

 

Replase the code with this code

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text

Namespace WorkflowActivity.Scripting.Script
    '''<summary>
    '''Provides one or more methods that can be run when the workflow scripting activity is performed.
    '''</summary>
    Public Class Script1
        Inherits ScriptClass90
        '''<summary>
        '''This method is run when the activity is performed.
        '''</summary>
        Protected Overrides Sub Execute()
            'Write your code here.
            msgbox(SpellNumber(1230.10))
        End Sub
'Main Function
    Function SpellNumber(ByVal MyNumber)
        Dim Dollars as String = ""
        Dim Cents as string  = ""
        Dim  Temp as String  = ""
        Dim DecimalPlace, Count
        Dim Place(9) As String
        Place(2) = " Thousand "
        Place(3) = " Million "
        Place(4) = " Billion "
        Place(5) = " Trillion "
        ' String representation of amount.
        MyNumber = Microsoft.VisualBasic.Trim(Microsoft.VisualBasic.Str(MyNumber))
        ' Position of decimal place 0 if none.
        DecimalPlace = Microsoft.VisualBasic.InStr(MyNumber, ".")
        ' Convert cents and set MyNumber to dollar amount.
        If DecimalPlace > 0 Then
            Cents = GetTens(Microsoft.VisualBasic.Left(Microsoft.VisualBasic.Mid(MyNumber, DecimalPlace + 1) & _
                    "00", 2))
            MyNumber = Microsoft.VisualBasic.Trim(Microsoft.VisualBasic.Left(MyNumber, DecimalPlace - 1))
        End If
        Count = 1
        Do While MyNumber <> ""
            Temp = GetHundreds(Microsoft.VisualBasic.Right(MyNumber, 3))
            If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
            If Microsoft.VisualBasic.Len(MyNumber) > 3 Then
                MyNumber = Microsoft.VisualBasic.Left(MyNumber, Microsoft.VisualBasic.Len(MyNumber) - 3)
            Else
                MyNumber = ""
            End If
            Count = Count + 1
        Loop
        Select Case Dollars
            Case ""
                Dollars = "No Dollars"
            Case "One"
                Dollars = "One Dollar"
            Case Else
                Dollars = Dollars & " Dollars"
        End Select
        Select Case Cents
            Case ""
                Cents = " and No Cents"
            Case "One"
                Cents = " and One Cent"
                Case Else
                Cents = " and " & Cents & " Cents"
        End Select
        SpellNumber = Dollars & Cents
    End Function

    ' Converts a number from 100-999 into text
    Function GetHundreds(ByVal MyNumber)
        Dim Result As String = ""
        If Microsoft.VisualBasic.Val(MyNumber) = 0 Then Exit Function
        MyNumber = Microsoft.VisualBasic.Right("000" & MyNumber, 3)
        ' Convert the hundreds place.
        If Microsoft.VisualBasic.Mid(MyNumber, 1, 1) <> "0" Then
            Result = GetDigit(Microsoft.VisualBasic.Mid(MyNumber, 1, 1)) & " Hundred "
        End If
        ' Convert the tens and ones place.
        If Microsoft.VisualBasic.Mid(MyNumber, 2, 1) <> "0" Then
            Result = Result & GetTens(Microsoft.VisualBasic.Mid(MyNumber, 2))
        Else
            Result = Result & GetDigit(Microsoft.VisualBasic.Mid(MyNumber, 3))
        End If
        GetHundreds = Result
    End Function

    ' Converts a number from 10 to 99 into text.
    Function GetTens(TensText)
        Dim Result As String
        Result = ""           ' Null out the temporary function value.
        If Microsoft.VisualBasic.Val(Microsoft.VisualBasic.Left(TensText, 1)) = 1 Then   ' If value between 10-19...
            Select Case Microsoft.VisualBasic.Val(TensText)
                Case 10: Result = "Ten"
                Case 11: Result = "Eleven"
                Case 12: Result = "Twelve"
                Case 13: Result = "Thirteen"
                Case 14: Result = "Fourteen"
                Case 15: Result = "Fifteen"
                Case 16: Result = "Sixteen"
                Case 17: Result = "Seventeen"
                Case 18: Result = "Eighteen"
                Case 19: Result = "Nineteen"
                Case Else
            End Select
        Else                                 ' If value between 20-99...
            Select Case Microsoft.VisualBasic.Val(Microsoft.VisualBasic.Left(TensText, 1))
                Case 2: Result = "Twenty "
                Case 3: Result = "Thirty "
                Case 4: Result = "Forty "
                Case 5: Result = "Fifty "
                Case 6: Result = "Sixty "
                Case 7: Result = "Seventy "
                Case 8: Result = "Eighty "
                Case 9: Result = "Ninety "
                Case Else
            End Select
            Result = Result & GetDigit _
                (Microsoft.VisualBasic.Right(TensText, 1))  ' Retrieve ones place.
        End If
        GetTens = Result
    End Function

    ' Converts a number from 1 to 9 into text.
    Function GetDigit(Digit)
        Select Case Microsoft.VisualBasic.Val(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"
            Case Else: GetDigit = ""
        End Select
    End Function
    End Class
End Namespace

 

Test the Script (F5)

 

 

 

You can use token to store the string.

regards,
Marco.

3 0
replied on April 17, 2018

Thank you Marco! smiley

0 0

Replies

You are not allowed to reply in this post.
You are not allowed to follow up in this post.

Sign in to reply to this post.