Function NumberToArabicWords(ByVal MyNumber As Integer) As String
Dim ArabicUnits() As String
Dim ArabicTens() As String
Dim ArabicHundreds() As String
Dim ArabicThousands() As String
Dim Result As String
' Validate input range
If MyNumber < 0 Or MyNumber > 10000 Then
NumberToArabicWords = "الرقم خارج النطاق (0-10000)"
Exit Function
End If
' Initialize Arabic number words
ArabicUnits = Split("صفر,واحد,اثنان,ثلاثة,أربعة,خمسة,ستة,سبعة,ثمانية,تسعة,عشرة,أحد عشر,اثنا عشر,ثلاثة عشر,أربعة عشر,خمسة عشر,ستة عشر,سبعة عشر,ثمانية عشر,تسعة عشر", ",")
ArabicTens = Split("عشرون,ثلاثون,أربعون,خمسون,ستون,سبعون,ثمانون,تسعون", ",")
ArabicHundreds = Split("مائة,مئتان,ثلاث مائة,أربع مائة,خمس مائة,ست مائة,سبع مائة,ثمان مائة,تسع مائة", ",")
ArabicThousands = Split("ألف,ألفان,ثلاثة آلاف,أربعة آلاف,خمسة آلاف,ستة آلاف,سبعة آلاف,ثمانية آلاف,تسعة آلاف,عشرة آلاف", ",")
' Handle 0-19 directly
If MyNumber <= 19 Then
Result = ArabicUnits(MyNumber)
' Handle 20-99
ElseIf MyNumber <= 99 Then
Dim tens As Integer: tens = MyNumber \ 10
Dim units As Integer: units = MyNumber Mod 10
If units = 0 Then
Result = ArabicTens(tens - 2)
Else
Result = ArabicUnits(units) & " و" & ArabicTens(tens - 2)
End If
' Handle 100-999
ElseIf MyNumber <= 999 Then
Dim hundreds As Integer: hundreds = MyNumber \ 100
Dim remainder As Integer: remainder = MyNumber Mod 100
Result = ArabicHundreds(hundreds - 1)
If remainder > 0 Then
Result = Result & " و" & NumberToArabicWords(remainder)
End If
' Handle 1000-10000
ElseIf MyNumber <= 10000 Then
Dim thousands As Integer: thousands = MyNumber \ 1000
remainder = MyNumber Mod 1000
Result = ArabicThousands(thousands - 1)
If remainder > 0 Then
Result = Result & " و" & NumberToArabicWords(remainder)
End If
End If
NumberToArabicWords = Result
End Function