Newsgroup: it.comp.appl.access
Titolo: Cifre in lettere - Come risolvere il problema ?

Ho proceduto  creare un modulo che mi trasforma i numeri in lettere,
ma adesso come risolvo il problema dei numeri che finiscono in 1
(VENTIUNO) e 8 (VENTIOTTO).?

 (VENTIUNO) e 8 (VENTIOTTO).?
Vai sul Sito Comune (link qui sotto) e nella Sezione General leggi la FAQ di
Federico Luciani intitolata "Convertire numeri in testo (12 => Dodici)",
penso che faccia al caso tuo.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

penso che faccia al caso tuo.
Ho cercato di adattare il modulo a quello che mi serve ma purtroppo
non riesco a risolvere il problema suddetto, ti allego la funzione che
ho creato.
Public Function Num2Lett(par As Double) As String
Dim d As String
Dim n As Integer
Dim Unita(20) As String
Dim Decine(10) As String
Unita(0) = " "
Unita(1) = "uno"
Unita(2) = "due"
Unita(3) = "tre"
Unita(4) = "quattro"
Unita(5) = "cingue"
Unita(6) = "sei"
Unita(7) = "sette"
Unita(8) = "otto"
Unita(9) = "nove"
Unita(10) = "dieci"
Unita(11) = "undici"
Unita(12) = "dodici"
Unita(13) = "tredici"
Unita(14) = "quattordici"
Unita(15) = "quindici"
Unita(16) = "sedici"
Unita(17) = "diciassette"
Unita(18) = "diciotto"
Unita(19) = "diciannove"
Unita(20) = "venti"
Decine(2) = "venti"
Decine(3) = "trenta"
Decine(4) = "quaranta"
Decine(5) = "cinquanta"
Decine(6) = "sessanta"
Decine(7) = "settanta"
Decine(8) = "ottanta"
Decine(9) = "novanta"
If par < 20 Then
   Num2Lett = Unita(par)
Else
   d = Left(Str(par), 2)
   If Val(Right(Str(par), 1)) = 1 Then
      n = Len(Decine(Val(d))) - 1
      Num2Lett = Mid(Decine(Val(d)), 1, n) & Unita(Val(Right(Str(par),
1)))
   Else
      Num2Lett = Decine(Val(d)) & Unita(Val(Right(Str(par), 1)))
   End If
End If
End Function



Io correggerei la funzione cosě, ma soltanto per una questione di
stile:
Dim Par As Long
Dim Dec As Integer, Uni As Integer
Dim d As String
Dim n As Integer
Dim Unita(20) As String
Dim Decine(10) As String
Unita(0) = " "
Unita(1) = "uno"
Unita(2) = "due"
Unita(3) = "tre"
Unita(4) = "quattro"
Unita(5) = "cinque"
Unita(6) = "sei"
Unita(7) = "sette"
Unita(8) = "otto"
Unita(9) = "nove"
Unita(10) = "dieci"
Unita(11) = "undici"
Unita(12) = "dodici"
Unita(13) = "tredici"
Unita(14) = "quattordici"
Unita(15) = "quindici"
Unita(16) = "sedici"
Unita(17) = "diciassette"
Unita(18) = "diciotto"
Unita(19) = "diciannove"
Unita(20) = "venti"
Decine(2) = "venti"
Decine(3) = "trenta"
Decine(4) = "quaranta"
Decine(5) = "cinquanta"
Decine(6) = "sessanta"
Decine(7) = "settanta"
Decine(8) = "ottanta"
Decine(9) = "novanta"
If Par < 20 Then
   Num2Lett = Unita(Par)
Else
   Dec = Int(Par / 10)
   Uni = Par Mod 10
   If Uni = 1 Or Uni = 8 Then
      n = Len(Decine(Dec)) - 1
      Num2Lett = Left(Decine(Dec), n) & Unita(Uni)
   Else
      Num2Lett = Decine(Dec) & Unita(Uni)
   End If
End If
E funziona, ma anche la tua se correggi la riga
If Val(Right(Str(par), 1)) = 1 Then
in 
If Val(Right(Str(par), 1)) = 1 OR  Val(Right(Str(par), 1)) = 8 Then
dovrebbe funzionare
Ciao
Filippo



Grazie per l'aiuto é perfetta.

Grazie per l'aiuto é perfetta.
145 righe per dire grazie 8-|