Conversione da numeri a lettere in VBA Excel

In questi giorni avevo la necessità di creare dei file Excel nei quali riportare la conversione in lettere di numeri, come d esempio, convertire “123” in “centoventitre“.

L’applicazione della conversione la si trova in molti contesti, specie quello bancario, fiscale o legale.

Excel non dispone di una funzione che consenta di eseguire tale conversione per cui me la sono scritta in VBA.

Il Codice: Come Funziona

Ecco il codice VBA:

Function NumberToWords(ByVal Number As Double) As String
  ' Italian version
  Dim u As Variant
  Dim d As Variant
  Dim h As Variant
  Dim IntNum As Long
  Dim t As String
  u = Array("", "uno", "due", "tre", "quattro", "cinque", "sei", "sette", "otto", "nove")
  d = Array("", "dieci", "venti", "trenta", "quaranta", "cinquanta", "sessanta", "settanta", "ottanta", "novanta")
  h = Array("", "cento", "duecento", "trecento", "quattrocento", "cinquecento", "seicento", "settecento", "ottocento", "novecento")

  IntNum = Int(Number)

  ' Handling numbers from 1 to 9
  If IntNum < 10 Then
    t = u(IntNum)
  ' Handling numbers from 10 to 99
  ElseIf IntNum < 100 Then
    t = d(Int(IntNum / 10)) & u(IntNum Mod 10)
  ' Handling numbers from 100 to 999
  ElseIf IntNum < 1000 Then
    t = h(Int(IntNum / 100)) & _
            d(Int((IntNum Mod 100) / 10)) & _
            u(IntNum Mod 10)
  Else
    t = "Number too big for the conversion!"
  End If

  ' Return the result
  NumberToWords = Trim(t)
End Function

Caratteristiche Principali

  1. Supporto per i numeri italiani:
    • La funzione utilizza array predefiniti per unità (u), decine (d) e centinaia (h) in lingua italiana.
    • Gestisce numeri fino a 999.
  2. Modularità:
    • Ogni blocco del codice è progettato per gestire un intervallo specifico: da 1 a 9, da 10 a 99, e da 100 a 999.
  3. Eliminazione degli spazi in eccesso:
    • Utilizza la funzione Trim per rimuovere spazi superflui dal risultato finale.
  4. Messaggio di errore personalizzato:
    • Per numeri superiori a 999, restituisce un messaggio: “Number too big for the conversion!”.

Come Usarlo

  1. Aggiungi il codice a Excel:
    • Premi Alt + F11 per aprire l’editor VBA.
    • Crea un nuovo modulo e incolla il codice.
  2. Chiama la funzione da Excel:
    • In una cella, usa:
      • =NumberToWords(123)
    • Questo restituirà: “centoventitre.

Perché è Utile

  • Automazione: Ideale per creare file in cui è necessario includere importi numerici in forma testuale.
  • Professionalità: Utilizzabile nei contesti professionali come legale, fiscale o bancario.
  • Italiano nativo: Traduzione in italiano delle cifre.

Possibili Miglioramenti

  • Supporto per i numeri decimali:
    • Effettivamente il codice per ora non supporta anche la gestione dei numeri con cifre decimali per cui sarebbe un improvement molto utile.
  • Estensione a numeri maggiori:
    • Il limite a 999 è facilmente incrementabile modificando il codice che ho creato.

Commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *