Convertire un numero valuta in testo

marconocciolini

Nuovo utente
13 Settembre 2019
9
3
Viareggio
2010
1
Salve, condividevo una funzione fatta un po di tempo fa, per poter compilare bollettini prestampati.
Al tempo mi serviva di concertire importi numerici in formato lettera.
Nel file c'e' la funzione, facilmente usufruibile per i propri lavori.
Visual Basic:
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
 

Allegati

Ultima modifica di un moderatore:

alfrimpa

VBA Expert
Supermoderatore
Expert
18 Dicembre 2015
22.672
1.745
66
Napoli
2019 Pro Plus
492
marconocciolini @marconocciolini

Le sezioni del forum dedicate ad Excel e ad altri programmi Office sono dedicate alle problematiche poste dagli utenti su tali programmi.

Ti è stato già detto che per lavori/soluzioni o altro c'è la sezione

Lavori e giochi con Excel e altri applicativi

Sposto la discussione
 

Enrico69

Nuovo utente
27 Novembre 2019
19
3
50
Genova
2013
0
Salve, condividevo una funzione fatta un po di tempo fa, per poter compilare bollettini prestampati.
Al tempo mi serviva di concertire importi numerici in formato lettera.
Nel file c'e' la funzione, facilmente usufruibile per i propri lavori.
Ciao
Funziona in qualcunque Excel ?
Ho provato a copiare la formula ma non me lo fa, se apro il tuo file invece funziona...
boh
Grazie e ciao
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!