I have added a little code to rectify this at line 6. I also change 0 Cents to 'only'. This may be a cultural thing, but that's how we do it this side of the pond, not that I have written a cheque in years. It's all done by BACS now!
Public Sub GetText(iValue As Float) As String
Dim sNumbers As String[][] = [["", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"], ["ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eightteen", "nineteen"], ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]]
Dim sValue As String = Str(Fix(iValue))
Dim icents As Integer = Int((Frac(iValue) * 100) + 0.01) ''Changed to stop rounding down
Dim iLen As Integer = Len(sValue)
Dim sResult, sCents As String ''Added sCents
Dim $ones As Integer = 0
Dim $teens As Integer = 1
Dim $over19 As Integer = 2
If iLen = 5 Then
If Val(Mid(sValue, 1, 2)) < 20 Then sResult = sNumbers[$teens][Val(Mid(sValue, 2, 1))]
If Val(Mid(sValue, 1, 2)) > 19 Then sResult = sNumbers[$over19][Val(Mid(sValue, 1, 1))] & " " & sNumbers[$ones][Val(Mid(sValue, 2, 1))]
sResult &= " thousand "
svalue = Right(svalue, 3)
iLen = 3
Endif
If iLen = 4 Then
sResult &= sNumbers[$ones][Val(Left(sValue, 1))] & " thousand "
svalue = Right(svalue, 3)
iLen = 3
Endif
If iLen = 3 And Val(Left(sValue, 1)) Then
sResult &= sNumbers[$ones][Val(Left(sValue, 1))] & " hundred "
svalue = Right(svalue, 2)
iLen = 2
Endif
If iLen = 2 Then
If Val(Right(sValue, 2)) < 20 Then sResult &= sNumbers[$teens][Val(Mid(sValue, 2, 1))]
If Val(Right(svalue, 2)) > 19 Then sResult &= sNumbers[$over19][Val(Mid(sValue, 1, 1))] & " " & sNumbers[$ones][Val(Mid(sValue, 2, 1))]
Endif
If iLen = 1 Then sResult &= sNumbers[$ones][Val(sValue)]
If iCents = 0 Then sCents = "only" Else sCents = "and " & Str(iCents) & " cents" ''Added
Return "* * * " & UCase(sResult[0]) & Mid(sResult, 2) & " dollars " & sCents & " * * *" ''Changed
End