by alexK (9 Submissions)
Category: VB function enhancement
Difficulty: Beginner
Date Added: Sun 7th February 2021
Rating: (1 Votes)
A simple function that converts a number in a number in words.
'Start Numbers to words Function
a = array( _
"zero", _
"one", _
"two", _
"three", _
"four", _
"five", _
"six", _
"seven", _
"eight", _
"nine", _
"ten", _
"eleven", _
"twelve", _
"thirteen", _
"fourteen", _
"fifteen", _
"sixteen", _
"seventeen", _
"eighteen", _
"nineteen" _
)
b = array( _
"twenty", _
"thirty", _
"forty", _
"fifty", _
"sixty", _
"seventy", _
"eighty", _
"ninety" _
)
c = array( _
"hundred", _
"thousand", _
"million", _
"billion", _
"trillion" _
)
'-------------------------------------------------------------------------'
' Returns the text for numbers; this can definitely be optimised further '
'-------------------------------------------------------------------------'
Function WhatAmI(i)
Dim s
If i >= 1000000000000 Then
If Len(i) = 15 Then s = WhatAmI(Left(i, 3)) & " " & c(4)
If Len(i) = 14 Then s = WhatAmI(Left(i, 2)) & " " & c(4)
If Len(i) = 13 Then s = WhatAmI(Left(i, 1)) & " " & c(4)
If Right(i, 12) <> "000000000000" Then
d = Mid(Right(i, 12), 1, 1)
e = Mid(Right(i, 12), 2, 1)
f = Mid(Right(i, 12), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(3)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 9) <> "000000000" Then
d = Mid(Right(i, 9), 1, 1)
e = Mid(Right(i, 9), 2, 1)
f = Mid(Right(i, 9), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(2)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 6) <> "000000" Then
d = Mid(Right(i, 6), 1, 1)
e = Mid(Right(i, 6), 2, 1)
f = Mid(Right(i, 6), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(1)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 3) <> "000" Then
d = Mid(Right(i, 3), 1, 1)
e = Mid(Right(i, 3), 2, 1)
f = Mid(Right(i, 3), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
ElseIf i >= 1000000000 Then
If Len(i) = 12 Then s = WhatAmI(Left(i, 3)) & " " & c(3)
If Len(i) = 11 Then s = WhatAmI(Left(i, 2)) & " " & c(3)
If Len(i) = 10 Then s = WhatAmI(Left(i, 1)) & " " & c(3)
If Right(i, 9) <> "000000000" Then
d = Mid(Right(i, 9), 1, 1)
e = Mid(Right(i, 9), 2, 1)
f = Mid(Right(i, 9), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(2)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 6) <> "000000" Then
d = Mid(Right(i, 6), 1, 1)
e = Mid(Right(i, 6), 2, 1)
f = Mid(Right(i, 6), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(1)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 3) <> "000" Then
d = Mid(Right(i, 3), 1, 1)
e = Mid(Right(i, 3), 2, 1)
f = Mid(Right(i, 3), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
ElseIf i >= 1000000 Then
If Len(i) = 9 Then s = WhatAmI(Left(i, 3)) & " " & c(2)
If Len(i) = 8 Then s = WhatAmI(Left(i, 2)) & " " & c(2)
If Len(i) = 7 Then s = WhatAmI(Left(i, 1)) & " " & c(2)
If Right(i, 6) <> "000000" Then
d = Mid(Right(i, 6), 1, 1)
e = Mid(Right(i, 6), 2, 1)
f = Mid(Right(i, 6), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f) & " " & c(1)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
If Right(i, 3) <> "000" Then
d = Mid(Right(i, 3), 1, 1)
e = Mid(Right(i, 3), 2, 1)
f = Mid(Right(i, 3), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
ElseIf i >= 1000 Then
If Len(i) = 6 Then s = WhatAmI(Left(i, 3)) & " " & c(1)
If Len(i) = 5 Then s = WhatAmI(Left(i, 2)) & " " & c(1)
If Len(i) = 4 Then s = WhatAmI(Left(i, 1)) & " " & c(1)
If Right(i, 3) <> "000" Then
d = Mid(Right(i, 3), 1, 1)
e = Mid(Right(i, 3), 2, 1)
f = Mid(Right(i, 3), 3, 1)
If d <> 0 Then
s = s & ", "
s = s & WhatAmI(d & e & f)
ElseIf e <> 0 Then
s = s & " and " & WhatAmI(e & f)
ElseIf f <> 0 Then
s = s & " and " & WhatAmI(f)
End If
End If
ElseIf i >= 100 Then
s = a(Left(i, 1)) & " " & c(0)
If Right(i, 2) <> "00" Then s = s & " and " & WhatAmI(Right(i, 2))
ElseIf i >= 90 Then
s = b(7)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 80 Then
s = b(6)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 70 Then
s = b(5)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 60 Then
s = b(4)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 50 Then
s = b(3)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 40 Then
s = b(2)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf i >= 30 Then
s = b(1)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf (i >= 20) Then
s = b(0)
If Right(i, 1) > 0 Then s = s & "-" & a(Right(i, 1))
ElseIf (i > 9) Then
s = a(i)
ElseIf (i >= 0 AND i <= 9) Then
s = a(i)
End If
WhatAmI = s
End Function