Da numeri in lettere

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.

  1. Funzione Cint … per convertire una stringa in un numero intero
Function cint(numero as string) As Integer
  Return CType(Val(numero), Integer)
End Function
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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

Grazie !

grazie mille!