Tutorial

Conversione di numeri in lettere con Visual Basic e/o Microsoft Access

Di seguito proponiamo il codice VBA, da utilizzare in un progetto Microsoft Access, EXCEL o comunque Visual Basic, per realizzare una funzione capace di convertire un valore numerico nell’equivalente stringa di testo. Per esempio 256 in Duecentocinquantasei. La routine può trovare utilizzo in diverse tipologie di applicazioni, per esempio nella creazione di bollettini postali, stesura di lettere commerciali etc.

Public Function NumeroInLettere(N) As String
Words = Array("", "UNO", "DUE", "TRE", "QUATTRO", "CINQUE", "SEI", _
"SETTE", "OTTO", "NOVE", "DIECI", "UNDICI", "DODICI", "TREDICI", _
"QUATTORDICI", "QUINDICI", "SEDICI", "DICIASSETTE", "DICIOTTO", "DICIANNOVE", _
"VENTI", "TRENTA", "QUARANTA", "CINQUANTA", "SESSANTA", "SETTANTA", _
"OTTANTA", "NOVANTA", "CENTO", "UNO", "MILLE", "UNMILIONE", _
"UNMILIARDO", "UNTRILIONE", "", "MILA", "MILIONI", "MILIARDI", "TRILIONI")
F$ = Right(Format(N, "###0.00"), 2)
I = Int(N)
If I = 0 Then
L$ = "ZERO"
Else
Dim G(5, 3) As Long
For J = 1 To 5
For k = 3 To 1 Step -1
I = I / 10
G(J, k) = (I - Int(I)) * 10
I = Int(I)
Next
Next
For J = 5 To 1 Step -1
If G(J, 1) + G(J, 2) + G(J, 3) = 0 Then
ElseIf G(J, 1) + G(J, 2) = 0 And G(J, 3) = 1 Then L$ = L$ & Words(28 + J)
Else
If G(J, 1) > 1 Then L$ = L$ & Words(G(J, 1))
If G(J, 1) > 0 Then L$ = L$ & Words(28)
If G(J, 2) = 1 Then
L$ = L$ & Words(G(J, 3) + 10)
Else
If G(J, 2) > 1 Then
L$ = L$ & Words(G(J, 2) + 18)
If G(J, 3) = 1 Or G(J, 3) = 8 Then L$ = Left(L$, Len(L$) - 1)
End If
L$ = L$ & Words(G(J, 3))
End If
L$ = L$ & Words(33 + J)
End If
Next
End If
NumToLet = L$ & "/" & F$
End Function

Per utilizzare la funzione in una cella Excel, una volta inserito il codice in un modulo standard, sul foglio Excel, nella cella che dovrà contenere il numero espresso in lettere, scriveremo: =NumeroInLettere(A1)

 

Comments (2)

  1. sono alle prime armi con access e devo inserire in un report un campo importo in cifre ed un campo importo in lettere corrispondente,conosco che microsoft ha già inserito sul web un codice che risolve il problema che ho incollao in un modulo.la difficoltà sta nel collegare il campo importo in cifre al codice e restituire al campo in lettere la conversione.se potete aiutarmi grazie.

  2. tommaso, 28. novembre 2012, 19:22
    sono alle prime armi con access e devo inserire in un report un campo importo in cifre ed un campo importo in lettere corrispondente,conosco che microsoft ha già inserito sul web un codice che risolve il problema che ho incollato in un modulo.la difficoltà sta nel collegare il campo importo in cifre al codice e restituire al campo in lettere la conversione.se potete aiutarmi grazie.

Comments are closed.