La routine
converti numeri in lettere trasformata in FUNZIONE:
NUMINEURO().
Utilizzo: Conversione numeri in lettere, quando la
conversione interessa più celle . Aggiornata al 30/06/03 con l'aggiunta
dell'argomento Arrotonda.
Questa procedura è
utile nel caso si voglia utilizzare la conversione su più celle, e magari
con riferimenti a celle distanti. A differenza delle routine del precedente
paragrafo, dove è necessario inserire nel codice i
riferimenti alle celle, sia quella che
porta il numero, sia quella dove deve apparire la conversione in lettere del
numero, questa funzione, una volta inserita la funzione in un modulo,
consente di essere richiamata in qualunque cella,
semplicemente dichiarando il nome della funzione ed il riferimento alla
cella da convertire. Se per esempio, vogliamo che in
F2 appaia il numero in lettere che è nella cella
A1, in F2
scriveremo
=Numineuro(A1;2)
'arrotondata a due decimali
ed avremo in
F2 la conversione. La conversione converte
numeri interi o decimali e restituisce sempre il numero scritto in lettere
con due decimali. (es: centoventisette/00). Ora è previsto l'arrotondamento
a due decimali secondo il concetto: se il terzo decimale è 5 o maggiore, il
secondo decimale viene arrotondato al decimale superiore (per eccesso), da 0
a 4, arrotondamento per difetto. Esempio:
in
A1 abbiamo 127,5478
con la funzione =Numineuro(A1;2) in un'altra
cella, otteniamo:
Centoventisette/55 (il secondo decimale
arrotondato per eccesso)
Questo è il codice, da copiare e
incollare in un modulo:
Function NumInEuro(NumTot As Currency, Arrotonda As Integer)
Application.ScreenUpdating = False
Dim N$(100), M$(100)
NumTot = Round(NumTot, Arrotonda)
Num = Int(NumTot)
Dec = NumTot - Num
Decim$ = Format(Dec, "." + String(Arrotonda, "0"))
Decim$ = " / " + Right$(Decim$, Len(Decim$) - 1)
If Arrotonda = 0 Then Decim$ = " / 00"
N$(0) = ""
N$(1) = "uno"
N$(2) = "due"
N$(3) = "tre"
N$(4) = "quattro"
N$(5) = "cinque"
N$(6) = "sei"
N$(7) = "sette"
N$(8) = "otto"
N$(9) = "nove"
N$(10) = "dieci"
N$(11) = "undici"
N$(12) = "dodoci"
N$(13) = "tredici"
N$(14) = "quattordici"
N$(15) = "quindici"
N$(16) = "sedici"
N$(17) = "diciassette"
N$(18) = "diciotto"
N$(19) = "diciannove"
M$(0) = ""
M$(2) = "venti"
M$(3) = "trenta"
M$(4) = "quaranta"
M$(5) = "cinquanta"
M$(6) = "sessanta"
M$(7) = "settanta"
M$(8) = "ottanta"
M$(9) = "novanta"
M$(10) = "Cento"
NN$ = LTrim$(Str$(Num))
If Len(NN$) > 6 Then
Milioni$ = Left$(NN$, Len(NN$) - 6)
NN$ = Right$(NN$, 6)
Else
Milioni$ = ""
End If
If Len(NN$) > 3 Then
Migliaia$ = Left$(NN$, Len(NN$) - 3)
NN$ = Right$(NN$, 3)
Else
Migliaia$ = ""
End If
GoSub Ciclo
LLL$ = LL$
NN$ = Migliaia$
If Migliaia$ = "1" Then
LLL$ = "mille" + LLL$
Else
GoSub Ciclo
If Len(LL$) > o Then LLL$ = LL$ + "mila" + LLL$
End If
NN$ = Milioni$
If Milioni$ = "1" Then
LLL$ = "unmilione" + LLL$
Else
GoSub Ciclo
If Len(LL$) > o Then LLL$ = LL$ + "milioni" + LLL$
End If
NumInEuro = LLL$ + Decim$
Exit Function
Ciclo:
LL$ = ""
Num0 = Val(NN$)
If Len(NN$) = 2 Then NN$ = "0" + NN$
If Len(NN$) = 1 Then NN$ = "00" + NN$
Num3 = Val(Right$(NN$, 1))
Num2 = Val(Mid$(NN$, 2, 1))
Num1 = Val(Left$(NN$, 1))
If Num0 > 99 Then
If Num0 > 199 Then LL$ = N$(Num1)
LL$ = LL$ + "cento"
End If
If Num2 > 1 Then
LL$ = LL$ + M$(Num2)
If Num3 > 0 Then
If Num3 = 1 Or Num3 = 8 Then LL$ = Left$(LL$, Len(LL$) - 1)
LL$ = LL$ + N$(Num3)
End If
End If
If Num2 < 2 Then
LL$ = LL$ + N$(Num3 + Num2 * 10)
End If
Return
End Function |
Procedura realizzata da Marco Nocciolini.
|