You are on page 1of 8

Option Explicit

Public Count, Place 'au fost declarate publice, ca poata fi preluate de functia
PreiaUnitati
Function SpellNumber(ByVal MyNumber, Optional MyCurrency As String = "")

Dim Lei, bani, Temp

Dim DecimalPlace ', Count

ReDim Place(9) As String

Place(2) = " Mii "

Place(3) = " Milioane "

Place(4) = " Miliarde "

Place(5) = " Trilioane "

' Reprezentarea valorii in cuvinte.

MyNumber = Trim(Str(MyNumber))

' Pozitia zecimalei sau 0 daca nu exista.

DecimalPlace = InStr(MyNumber, ".")

' Converteste bani si seteaza MyNumber la valoare lei.

If DecimalPlace > 0 Then

bani = PreiaZeci(Left(Mid(MyNumber, DecimalPlace + 1) & 0, 2))

MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))

End If

Count = 1

Do While MyNumber <> ""

Temp = PreiaSute(Right(MyNumber, 3))

If Temp <> "" Then Lei = Temp & Place(Count) & Lei

If Len(MyNumber) > 3 Then

MyNumber = Left(MyNumber, Len(MyNumber) - 3)

Else

MyNumber = ""

End If

Count = Count + 1
Loop

Dim str_amount, str_amounts

Dim str_ban, str_bani

Select Case UCase(MyCurrency)

Case "EUR"

str_amount = "Euro"

str_amounts = "Euro"

str_ban = "cent"

str_bani = "centi"

Case "USD"

str_amount = "Dolar"

str_amounts = "Dolari"

str_ban = "Cent"

str_bani = "Centi"

Case Else:

str_amount = "Leu"

str_amounts = "Lei"

str_ban = "ban"

str_bani = "bani"

End Select

Select Case Lei

Case ""

Lei = "Zero " & str_amounts

Case "Unu"

Lei = "Un " & str_amount

Case Else

Lei = Lei & " " & str_amounts


End Select

Select Case bani

Case ""

bani = " si zero " & str_bani

Case "Unu"

bani = " si un " & str_ban

Case Else

bani = " si " & bani & " " & str_bani

End Select

SpellNumber = Lei & bani

End Function

' Converteste un numar din intervalul 100-999 in text

Function PreiaSute(ByVal MyNumber)

Dim Result As String

If Val(MyNumber) = 0 Then Exit Function

MyNumber = Right("000" & MyNumber, 3)

' Aici sute.

If Mid(MyNumber, 1, 1) <> "0" Then

If Mid(MyNumber, 1, 1) = "1" Then

Result = " O Suta "

ElseIf Mid(MyNumber, 1, 1) = "2" Then

Result = " Doua Sute "

Else

Result = PreiaUnitati(Mid(MyNumber, 1, 1)) & " Sute "

End If

End If

' Converteste zeci si unitati.


If Mid(MyNumber, 2, 1) <> "0" Then

Result = Result & PreiaZeci(Mid(MyNumber, 2))

Else

Result = Result & PreiaUnitati(Mid(MyNumber, 3))

End If

PreiaSute = Result

End Function

' Converteste un numar din intervalul 10-99 in text.

Function PreiaZeci(ZeciText)

Dim Result As String

Result = "" ' Anuleaza valoarea functiei temporare.

If Val(Left(ZeciText, 1)) = 1 Then ' Daca valoarea este intre 10-19...

Select Case Val(ZeciText)

Case 10: Result = "Zece"

Case 11: Result = "Unsprezece"

Case 12: Result = "Doisprezece"

Case 13: Result = "Treisprezece"

Case 14: Result = "Paisprezece"

Case 15: Result = "Cincisprezece"

Case 16: Result = "Saisprezece"

Case 17: Result = "Saptesprezece"

Case 18: Result = "Optsprezece"

Case 19: Result = "Nouasprezece"

Case Else

End Select

Else ' If value between 20-99...

Select Case Val(Left(ZeciText, 1))

Case 2:

If Right(ZeciText, 1) = "0" Then


Result = "Douazeci "

Else

Result = "Douazeci si "

End If

Case 3:

If Right(ZeciText, 1) = "0" Then

Result = "Treizeci "

Else

Result = "Treizeci si "

End If

Case 4:

If Right(ZeciText, 1) = "0" Then

Result = "Patruzeci "

Else

Result = "Patruzeci si "

End If

Case 5:

If Right(ZeciText, 1) = "0" Then

Result = "Cincizeci "

Else

Result = "Cincizeci si "

End If

Case 6:

If Right(ZeciText, 1) = "0" Then

Result = "Saizeci "

Else

Result = "Saizeci si "

End If

Case 7:
If Right(ZeciText, 1) = "0" Then

Result = "Saptezeci "

Else

Result = "Saptezeci si "

End If

Case 8:

If Right(ZeciText, 1) = "0" Then

Result = "Optzeci "

Else

Result = "Optzeci si "

End If

Case 9:

If Right(ZeciText, 1) = "0" Then

Result = "Nouazeci "

Else

Result = "Nouazeci si "

End If

Case Else

End Select

Result = Result & PreiaUnitati(Right(ZeciText, 1)) ' Recupereaza unitatile.

End If

If ZeciText > 20 Then

PreiaZeci = Result & " de"

Else

PreiaZeci = Result

End If

End Function
' Converteste un numar din intervalul 1-9 in text.

Function PreiaUnitati(Digit)

Select Case Val(Digit)

Case 1:

If Count = 1 Then

PreiaUnitati = "Unu"

ElseIf Count = 2 Then

PreiaUnitati = "O"

Place(2) = " Mie "

ElseIf Count = 3 Then

PreiaUnitati = "Un"

Place(3) = " Milion "

ElseIf Count = 4 Then

PreiaUnitati = "Un"

Place(4) = " Miliard "

ElseIf Count = 5 Then

PreiaUnitati = "Un"

Place(5) = " Trilion "

End If

Case 2:

If Count = 1 Then

PreiaUnitati = "Doi"

ElseIf Count = 2 Then

PreiaUnitati = "Doua"

ElseIf Count = 3 Then

PreiaUnitati = "Doua"

Place(3) = " Milioane "

ElseIf Count = 4 Then

PreiaUnitati = "Doua"
Place(4) = " Miliarde "

ElseIf Count = 5 Then

PreiaUnitati = "Doua"

Place(5) = " Trilioane "

End If

Case 3: PreiaUnitati = "Trei"

Case 4: PreiaUnitati = "Patru"

Case 5: PreiaUnitati = "Cinci"

Case 6: PreiaUnitati = "Sase"

Case 7: PreiaUnitati = "Sapte"

Case 8: PreiaUnitati = "Opt"

Case 9: PreiaUnitati = "Noua"

Case Else: PreiaUnitati = ""

End Select

End Function

You might also like