title: VBA to convert amount to words except for cents
body: <p>I have the codes below, how can I edit this so the cents will remain numeric.<br>
  Instead of converting Cents to text, I want it to show Cent amount over 100 (10.21 > Ten Dollars &amp; 21/100).</p>
  
  <blockquote>
    <p>Example:
    <strong>$50.31</strong> convert to <strong>Fifty Dollars &amp; 31/100</strong>.
    <strong>$50.00</strong>  convert to <strong>Fifty Dollars Only</strong>
    <strong>$50.01</strong>  convert to <strong>Fifty Dollars &amp; 1/100</strong></p>
  </blockquote>
  
  <p>(Sorry for bad english).</p>
  
  <pre><code>'Main function
  Function SpellNumber(ByVal MyNumber)
  Dim Dollars, Cents, Temp
  Dim DecimalPlace, Count
  ReDim Place(9) As String
  Place(2) = " Thousand "
  Place(3) = " Million "
  Place(4) = " Billion "
  Place(5) = " Trillion "
  ' String representation of amount.
  MyNumber = Trim(Str(MyNumber))
  ' Position of decimal place 0 if none.
  DecimalPlace = InStr(MyNumber, ".")
  ' Convert cents and set MyNumber to dollar amount.
  If DecimalPlace &gt; 0 Then
      Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) &amp; _
                "00", 2))
      MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
  End If
  Count = 1
  Do While MyNumber &lt;&gt; ""
      Temp = GetHundreds(Right(MyNumber, 3))
      If Temp &lt;&gt; "" Then Dollars = Temp &amp; Place(Count) &amp; Dollars
      If Len(MyNumber) &gt; 3 Then
          MyNumber = Left(MyNumber, Len(MyNumber) - 3)
      Else
          MyNumber = ""
      End If
      Count = Count + 1
  Loop
  
  SpellNumber = Dollars &amp; Cents
  End Function
  
  ' Converts a number from 100-999 into text
  Function GetHundreds(ByVal MyNumber)
  Dim Result As String
  If Val(MyNumber) = 0 Then Exit Function
  MyNumber = Right("000" &amp; MyNumber, 3)
  ' Convert the hundreds place.
  If Mid(MyNumber, 1, 1) &lt;&gt; "0" Then
      Result = GetDigit(Mid(MyNumber, 1, 1)) &amp; " Hundred and "
  End If
  ' Convert the tens and ones place.
  If Mid(MyNumber, 2, 1) &lt;&gt; "0" Then
      Result = Result &amp; GetTens(Mid(MyNumber, 2))
  Else
      Result = Result &amp; GetDigit(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 Val(Left(TensText, 1)) = 1 Then   ' If value between 10-19...
      Select Case 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 Val(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
      If GetDigit(Right(TensText, 1)) = "" Then
      Result = Result &amp; GetDigit(Right(TensText, 1))   ' Retrieve ones place.
          Else
           Result = Result &amp; "-" &amp; GetDigit(Right(TensText, 1))
      End If
  End If
  GetTens = Result
  End Function
  
  ' Converts a number from 1 to 9 into text.
  Function GetDigit(Digit)
  Select Case 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 0: GetDigit = ""
  End Select
  End Function
  </code></pre>