Results 1 to 3 of 3
  1. #1
    Join Date
    Mar 2004
    Posts
    361

    Unanswered: Formating merged data

    Is it possible to format a merge document in word to transform a number such as $34,000 into Thirty Four Thousand and 00/100. I normally use alt f9 to get into the formating but I don't know how to format this number.

    Thanks for any help.

  2. #2
    Join Date
    May 2004
    Posts
    19
    Create a function!

  3. #3
    Join Date
    Oct 2003
    Location
    Ger
    Posts
    1,969
    Provided Answers: 1
    PHP Code:
     Converting  the currency value "$531.20" into the text "Five hundred thirty one and twenty cents."

    '************ Code Start **********
    '
    This code was originally written by Joe Foster.
    'It is not to be altered or distributed,
    '
    except as part of an application.
    'You are free to use it in any application,
    '
    provided the copyright notice is left unchanged.
    '
    Convert a currency value into an (AmericanEnglish string
    Function English (ByVal N As Currency) As String
        
    Const Thousand 1000@
        Const 
    Million Thousand Thousand
        
    Const Billion Thousand Million
        
    Const Trillion Thousand Billion

        
    If (0@) Then English "zero": Exit Function

        
    Dim Buf As String: If (0@) Then Buf "negative " Else Buf ""
        
    Dim Frac As CurrencyFrac Abs(Fix(N))
        If (
    0@ Or Frac <> 0@) Then N Abs(Fix(N))
        
    Dim AtLeastOne As IntegerAtLeastOne >= 1

        
    If (>= TrillionThen
            Debug
    .Print N
            Buf 
    Buf EnglishDigitGroup(Int(Trillion)) & " trillion"
            
    Int(Trillion) * Trillion ' Mod overflows
            If (N >= 1@) Then Buf = Buf & " "
        End If
        
        If (N >= Billion) Then
            Debug.Print N
            Buf = Buf & EnglishDigitGroup(Int(N / Billion)) & " billion"
            N = N - Int(N / Billion) * Billion ' 
    Mod still overflows
            
    If (>= 1@) Then Buf Buf " "
        
    End If

        If (
    >= MillionThen
            Debug
    .Print N
            Buf 
    Buf EnglishDigitGroup(Million) & " million"
            
    N Mod Million
            
    If (>= 1@) Then Buf Buf " "
        
    End If

        If (
    >= ThousandThen
            Debug
    .Print N
            Buf 
    Buf EnglishDigitGroup(Thousand) & " thousand"
            
    N Mod Thousand
            
    If (>= 1@) Then Buf Buf " "
        
    End If

        If (
    >= 1@) Then
            Debug
    .Print N
            Buf 
    Buf EnglishDigitGroup(N)
        
    End If

        If (
    Frac 0@) Then
            Buf 
    Buf " exactly"
        
    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

        
    English Buf
    End 
    Function
    ' Support function to be used only by English()
    Private Function EnglishDigitGroup (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

        '
    Do hundreds
        Select 
    Case (100)
        Case 
    0Buf "":  Flag False
        
    Case 1Buf One HundredFlag True
        
    Case 2Buf Two HundredFlag True
        
    Case 3Buf Three HundredFlag True
        
    Case 4Buf Four HundredFlag True
        
    Case 5Buf Five HundredFlag True
        
    Case 6Buf Six HundredFlag True
        
    Case 7Buf Seven HundredFlag True
        
    Case 8Buf Eight HundredFlag True
        
    Case 9Buf Nine HundredFlag True
        End Select
       
        
    If (Flag <> FalseThen N N Mod 100
        
    If (0Then
            
    If (Flag <> FalseThen Buf Buf " "
        
    Else
            
    EnglishDigitGroup Buf
            
    Exit Function
        
    End If      
        
    'Do tens (except teens)
        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
            EnglishDigitGroup = Buf
            Exit Function
        End If
        
        '
    Do ones and teens
        Select 
    Case (N)
        Case 
    0' do nothing
        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

        EnglishDigitGroup = Buf
    End Function 

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •