Si usa ancora convertire i numeri in lettere… per compilare un assegno oppure alla Fantozziana maniera per compilare 12 kg di cambiali.
posto la funzione in modo che tutti coloro che ne hanno necessita possano prelevarla ed implementarla.
- Funzione Cint … per convertire una stringa in un numero intero
Function cint(numero as string) As Integer
Return CType(Val(numero), Integer)
End Function
- Funzione Riempi … per riempire una stringa di caratteri dello stesso tipo
Function riempi(stringa as string, lunghezza as integer, filler as string = " ") As string
if len(stringa) <= lunghezza then
return left(stringa, lunghezza)
end if
dim lungastringa as integer
dim lungariempi as integer
dim cursore as integer
dim riempi as string
riempi = ""
lungastringa = len(stringa)
lungariempi = lunghezza - lungastringa
for cursore = 1 to lungariempi
riempi = riempi + filler
next
return stringa + riempi
End Function
- Calcola lettere
Dim result As String
dim risultato as string
result = ""
Dim intero As String
intero = Format(Importo, "#.00")
Dim resto As String
resto = "/" + Right(intero, 2)
intero = Left(intero, Len(intero) - 3)
If Left(intero, 1) = "-" Then
intero = Mid(intero, 2)
End If
If Importo = 0 Then
risultato = "zero/00"
return risultato
exit Function
End If
Dim mille As Integer
mille = -1
Dim k As Integer
k = Len(intero) Mod 3
If Not (k = 0) Then
intero = riempi("",3 - k, "0") + intero
End If
While Not (intero = "")
mille = mille + 1
Dim parziale As String = ""
Dim tripla As String
tripla = Right(intero, 3)
Dim s As String = ""
intero = Left(intero, Len(intero) - 3)
Dim tv As Integer
tv = CInt(tripla)
Dim td As Integer
td = tv Mod 100
Dim tc As Integer
tc = (tv - td) / 100
If Not (tc = 0) Then
parziale = "cento"
If tc > 1 Then
parziale = Unita(tc) + parziale
End If
End If
If td < 20 Then
parziale = parziale + Unita(td)
Else
Dim x As Integer
x = td Mod 10
Dim y As Integer
y = (td - x) / 10
parziale = parziale + Decine(y)
s = Unita(x)
If (InStr(1, "uo", Left(s, 1)) <> 0) And (s <> "") And (Not (y = 0)) Then
parziale = Left(parziale, Len(parziale) - 1)
End If
parziale = parziale + s
End If
s = Migliaia(mille)
If (mille > 0) And (Not (parziale = "")) Then
k = mille
If Not (parziale = "uno") Then
k = k + 4
s = Migliaia(k)
If Right(parziale, 3) = "uno" Then
parziale = Left(parziale, Len(parziale) - 1)
End If
Else
parziale = ""
End If
parziale = parziale + s
End If
result = parziale + result
Wend
If Importo < 0 Then
result = "meno" + result
End If
return result + resto
- Unit
Private Function Unita(k As Integer) As String
Dim Lettere() As String
dim risultato as String
Lettere = Split(",uno,due,tre,quattro,cinque,sei,sette,otto,nove,dieci,undici,dodici,tredici,quattordici,quindici,sedici,diciassette,diciotto,diciannove", ",")
If (k < 0) Or (k > UBound(Lettere) ) Then
risultato = ""
Else
risultato = Lettere(k)
End If
return risultato
End Function
- Decine
Private Function Decine(k As Integer) As String
Dim Lettere() As String
dim risultato as String
Lettere = Split(",dieci,venti,trenta,quaranta,cinquanta,sessanta,settanta,ottanta,novanta", ",")
If (k < 0) Or (k > UBound(Lettere)) Then
risultato = ""
Else
risultato = Lettere(k)
End If
Return risultato
End Function
- Migliaia
Private Function Migliaia(k As Integer) As String
Dim Lettere() As String
dim risultato as string
Lettere = Split(",mille,unmilione,unmiliardo,millemiliardi,mila,milioni,miliardi,milamiliardi,milamiliardi,migliaiadimiliardi", ",")
If (k < 0) Or (k > UBound(Lettere)) Then
risultato = ""
Else
risultato = Lettere(k)
End If
Return risultato
End Function
e finalmente la funzione che restituisce le lettere da un importo
Function Cifre2Lettere(importo as double) As string
dim letterenumero as string
letterenumero = CalcolaLettere(Importo)
return letterenumero
End Function
Buon Lavoro