Pubblico una funzione che ho scritto per convertire un numero in lettere. Questa ha un codice evidentemente più breve e semplice di altre reperibili su internet. Funziona con numeri positivi uguali o minori di 999.999.999.999.999,99
ESEMPIO:
INPUT: 123.456.789,12
OUTPUT: CENTOVENTITREMILIONIQUATTROCENTOCINQUANTASEIMILASETTECENTOOTTANTANOVE/12
ESEMPIO:
INPUT: 123.456.789,12
OUTPUT: CENTOVENTITREMILIONIQUATTROCENTOCINQUANTASEIMILASETTECENTOOTTANTANOVE/12
Codice:
Public Function NumToLet(N) As String
Words = Array("", "UNO", "DUE", "TRE", "QUATTRO", "CINQUE", "SEI", _
"SETTE", "OTTO", "NOVE", "DIECI", "UNDICI", "DODICI", "TREDICI", _
"QUATTORDICI", "QUINDICI", "SEDICI", "DICIASSETTE", "DICIOTTO", "DICIANNOVE", _
"VENTI", "TRENTA", "QUARANTA", "CINQUANTA", "SESSANTA", "SETTANTA", _
"OTTANTA", "NOVANTA", "CENTO", "UNO", "MILLE", "UNMILIONE", _
"UNMILIARDO", "UNTRILIONE", "", "MILA", "MILIONI", "MILIARDI", "TRILIONI")
F$ = Right(Format(N, "###0.00"), 2)
I = Int(N)
If I = 0 Then
L$ = "ZERO"
Else
Dim G(5, 3) As Long
For J = 1 To 5
For k = 3 To 1 Step -1
I = I / 10
G(J, k) = (I - Int(I)) * 10
I = Int(I)
Next
Next
For J = 5 To 1 Step -1
If G(J, 1) + G(J, 2) + G(J, 3) = 0 Then
ElseIf G(J, 1) + G(J, 2) = 0 And G(J, 3) = 1 Then L$ = L$ & Words(28 + J)
Else
If G(J, 1) > 1 Then L$ = L$ & Words(G(J, 1))
If G(J, 1) > 0 Then L$ = L$ & Words(28)
If G(J, 2) = 1 Then
L$ = L$ & Words(G(J, 3) + 10)
Else
If G(J, 2) > 1 Then
L$ = L$ & Words(G(J, 2) + 18)
If G(J, 3) = 1 Or G(J, 3) = 8 Then L$ = Left(L$, Len(L$) - 1)
End If
L$ = L$ & Words(G(J, 3))
End If
L$ = L$ & Words(33 + J)
End If
Next
End If
NumToLet = L$ & "/" & F$
End Function
Ultima modifica di un moderatore: