Dim label_unita(20) As String Dim label_decine(10) As String Public Function toLetters(ByVal euro As Double) As String label_unita(1) = "uno" label_unita(2) = "due" label_unita(3) = "tre" label_unita(4) = "quattro" label_unita(5) = "cinque" label_unita(6) = "sei" label_unita(7) = "sette" label_unita(8) = "otto" label_unita(9) = "nove" label_unita(10) = "dieci" label_unita(11) = "undici" label_unita(12) = "dodici" label_unita(13) = "tredici" label_unita(14) = "quattordici" label_unita(15) = "quindici" label_unita(16) = "sedici" label_unita(17) = "diciassette" label_unita(18) = "diciotto" label_unita(19) = "diciannove" label_decine(1) = "dieci" label_decine(2) = "venti" label_decine(3) = "trenta" label_decine(4) = "quaranta" label_decine(5) = "cinquanta" label_decine(6) = "sessanta" label_decine(7) = "settanta" label_decine(8) = "ottanta" label_decine(9) = "novanta" Dim StrIntero As String = MilioniMigliaia(Int(euro)) Dim decimali As Integer = CInt(Decimal.Subtract(euro, Decimal.Truncate(euro)) * 100) toLetters = StrIntero If Not toLetters = "Numero troppo grande" Then toLetters = toLetters & "/" If decimali = 0 Then toLetters &= "00" Else toLetters &= decimali End If toLetters = UCase(Left(toLetters, 1)) & Right(toLetters, Len(toLetters) - 1) toLetters = Replace(toLetters, "tau", "tu") toLetters = Replace(toLetters, "tao", "to") toLetters = Replace(toLetters, "too", "to") toLetters = Replace(toLetters, "tio", "to") End If End Function Private Function Centinaia(ByVal Numero As Double) As String Dim NumCentinaia As Integer Dim StrCentinaia As String = "" NumCentinaia = Int(Numero / 100) If NumCentinaia > 0 Then If NumCentinaia = 1 Then StrCentinaia = "cento" Else StrCentinaia = label_unita(NumCentinaia) & "cento" End If End If Centinaia = StrCentinaia & DecineUnita(Numero - (NumCentinaia * 100)) End Function Private Function DecineUnita(ByVal Numero As Double) As String Dim Decine As String Dim Unita As Integer If Numero = 0 Then DecineUnita = "" Else If Numero < 20 Then DecineUnita = label_unita(Numero) Else Decine = label_decine(Int(Numero / 10)) Unita = Numero Mod 10 If Unita = 0 Then DecineUnita = Decine Else DecineUnita = Decine & label_unita(Unita) End If End If End If End Function Private Function MilioniMigliaia(ByVal Numero As Double) As String Dim Assoluto As Double Dim NumMilioni As Double Dim Milioni As String Dim Var1 As Double Dim NumMigliaia As Double Dim Migliaia As String = "" If Numero > 999999999 Then MilioniMigliaia = "Numero troppo grande" Exit Function End If Assoluto = Int(Numero) NumMilioni = Int(Assoluto / 1000000) If NumMilioni = 0 Then Milioni = "" ElseIf NumMilioni = 1 Then Milioni = "unmilione" Else Milioni = Centinaia(NumMilioni) & "milioni" End If Var1 = Assoluto Mod 1000000 NumMigliaia = Int(Var1 / 1000) If NumMigliaia = 1 Then Migliaia = "mille" Else If NumMigliaia <> 0 Then Migliaia = Centinaia(NumMigliaia) & "mila" End If MilioniMigliaia = Milioni & Migliaia & Centinaia(Var1 Mod 1000) End Function