Public dator As Variant
Public lettere As Variant
Sub conversione()
Sheets("ELENCO nOMINATIVI").Select
numa = Range("C3")
leta = ("D3")
Select Case Range("C2")
leta = ("d2")
dator = numa
ff = IsNumeric(dator)
If ff = False Then
GoTo nexta
End If
If dator = 0 Then
Range(leta) = ""
GoTo nexta
End If
decix = dator * 100
dator = Int(dator) * 100
decim = decix - dator
If Len(decim) = 1 Then decim = "0" & decim
valut = "e"
If decim + 0 > 0 And UCase(valut) <> "E" Then
MsgBox "Presenti decimali in una richiesta diversa da 'E' (Euro)"
GoTo nexta
End If
simbeuro = "€"
dator = Int(numa)
calcola
Range(leta) = lettere
If decim > 0 Then
If Len(decim) = 1 Then decim = decim * 10
Range(leta) = Range(leta) & "/" & decim
Else
Range(leta) = Range(leta) & "/00"
End If
nexta:
End Sub
Sub calcola()
lettere = ""
x = dator
unita = Array("zero", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove")
deci = Array("dieci", "undici", "dodici", "tredici", "quattordici", "quindici", "sedici", "diciasette", "diciotto", "diciannove")
decine = Array("vuoto", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta")
GoSub Azzera
'IMPORTI IN MILIARDI
If dator > 999999999 And dator < 1000000000000# Then
num = dator
migl = Int(num / 10 ^ 9)
If migl >= 10 ^ 2 Then
cent = Int(migl / 10 ^ 2)
num = migl - cent * 10 ^ 2
End If
If migl >= 10 And migl <= 99 Then
num = migl
End If
If migl >= 10 Then
dec = Int(num / 10)
num = num - dec * 10
unit = num
End If
If num < 10 Then unit = num
End If
If dator > 999999999 And dator < 1000000000000# Then
If migl = 1 Then
lettere = lettere & "unmiliardo"
unit = 0
End If
If migl > 1 And migl <= 9 Then
lettere = lettere & unita(migl)
End If
If cent = 1 Then
lettere = lettere & "cento"
ElseIf cent > 1 Then
lettere = lettere & unita(cent) & "cento"
End If
If dec = 1 Then
lettere = lettere & deci(unit)
unit = 0
End If
If dec > 1 Then lettere = lettere & decine(dec - 1)
If (dec > 1 And unit = 1) Or (dec > 1 And unit = 8) Then
lettere = Mid(lettere, 1, Len(lettere) - 1)
End If
If unit > 0 Then lettere = lettere & unita(unit)
dator = dator - migl * 10 ^ 9
If migl > 1 Then lettere = lettere & "miliardi"
End If
GoSub Azzera
'IMPORTI IN MILIONI
If dator > 999999 And dator < 1000000000 Then
num = dator
migl = Int(num / 10 ^ 6)
If migl >= 10 ^ 2 Then
cent = Int(migl / 10 ^ 2)
num = migl - cent * 10 ^ 2
End If
If migl >= 10 And migl <= 99 Then
num = migl
End If
If migl >= 10 Then
dec = Int(num / 10)
num = num - dec * 10
unit = num
End If
If num < 10 Then unit = num
End If
If dator > 999999 And dator < 1000000000 Then
If migl = 1 Then
lettere = lettere & "unmilione"
unit = 0
End If
If migl > 1 And migl <= 9 Then
lettere = lettere & unita(migl)
End If
If cent = 1 Then
lettere = lettere & "cento"
ElseIf cent > 1 Then
lettere = lettere & unita(cent) & "cento"
End If
If dec = 1 Then
lettere = lettere & deci(unit)
unit = 0
End If
If dec > 1 Then lettere = lettere & decine(dec - 1)
If (dec > 1 And unit = 1) Or (dec > 1 And unit = 8) Then
lettere = Mid(lettere, 1, Len(lettere) - 1)
End If
If unit > 0 Then lettere = lettere & unita(unit)
dator = dator - migl * 10 ^ 6
If migl > 1 Then lettere = lettere & "milioni"
End If
GoSub Azzera
'IMPORTI IN MIGLIAIA
If dator > 999 And dator < 1000000 Then
num = dator
migl = Int(num / 10 ^ 3)
If migl >= 10 ^ 2 Then
cent = Int(migl / 10 ^ 2)
num = migl - cent * 10 ^ 2
End If
If migl >= 10 And migl <= 99 Then
num = migl
End If
If migl >= 10 Then
dec = Int(num / 10)
num = num - dec * 10
unit = num
End If
If migl < 10 Then unit = migl
End If
If dator > 999 And dator < 1000000 Then
If migl = 1 Then
lettere = lettere & "mille"
unit = 0
End If
If cent = 1 Then
lettere = lettere & "cento"
ElseIf cent > 1 Then
lettere = lettere & unita(cent) & "cento"
End If
If dec = 1 Then
lettere = lettere & deci(unit)
unit = 0
End If
If dec > 1 Then lettere = lettere & decine(dec - 1)
If (dec > 1 And unit = 1) Or (dec > 1 And unit = 8) Then
lettere = Mid(lettere, 1, Len(lettere) - 1)
End If
If unit > 0 Then lettere = lettere & unita(unit)
dator = dator - migl * 10 ^ 3
If migl > 1 Then lettere = lettere & "mila"
End If
GoSub Azzera
'IMPORTI IN CENTINAIA
If dator > 0 And dator <= 999 Then
num = dator
If num >= 10 ^ 2 Then
cent = Int(num / 10 ^ 2)
num = num - cent * 10 ^ 2
End If
If num >= 10 Then
dec = Int(num / 10)
num = num - dec * 10
unit = num
End If
If num < 10 Then unit = num
End If
If dator > 0 And dator <= 999 Then
If cent = 1 Then
lettere = lettere & "cento"
ElseIf cent > 1 Then
lettere = lettere & unita(cent) & "cento"
End If
If dec = 1 Then
lettere = lettere & deci(unit)
unit = 0
End If
If dec > 1 Then
lettere = lettere & decine(dec - 1)
End If
If (dec > 1 And unit = 1) Or (dec > 1 And unit = 8) Then
lettere = Mid(lettere, 1, Len(lettere) - 1)
End If
If unit > 0 Then
lettere = lettere & unita(unit)
End If
End If
Exit Sub
Azzera:
cent = 0
num = 0
dec = 0
unit = 0
migl = 0
Return
End Sub
|