Un pò di tempo fa trovai questa funzione, poi non l'ho più usata, fammi sapere come va:
codice:
Function Lettere(wknumero, Optional Tipo As Variant) As String
'Nota il se Tipo è 1=maiuscolo, se 2=minuscolo
'se 3=capitalizzato
Dim WkCentinaia, WkMigliaia, WkMilioni, WkMiliardi, WkStringa As String
Dim pass As Byte
wknumero = Str$(Int(wknumero))
wknumero = Space(12 - Len(wknumero)) + wknumero
WkMiliardi = Left$(wknumero, 3)
WkMilioni = Mid$(wknumero, 4, 3)
WkMigliaia = Mid$(wknumero, 7, 3)
WkCentinaia = Mid$(wknumero, 10, 3)
WkStringa = ""
For pass = 1 To 4
Select Case pass
Case Is = 1
If Val(WkMiliardi) = 1 Then
WkStringa = WkStringa + "unmiliardo"
End If
If Val(WkMiliardi) > 1 Then
WkStringa = WkStringa + NumTrd(WkMiliardi) + "miliardi"
End If
Case Is = 2
If Val(WkMilioni) = 1 Then
WkStringa = WkStringa + "unmilione"
End If
If Val(WkMilioni) > 1 Then
WkStringa = WkStringa + NumTrd(WkMilioni) + "milioni"
End If
Case Is = 3
If Val(WkMigliaia) = 1 Then
WkStringa = WkStringa + "mille"
End If
If Val(WkMigliaia) > 1 Then
WkStringa = WkStringa + NumTrd(WkMigliaia) + "mila"
End If
Case Is = 4
If Val(WkCentinaia) > 0 Then
WkStringa = WkStringa + NumTrd(WkCentinaia)
End If
If Val(WkCentinaia) = 0 Then
If WkStringa = "" Then WkStringa = "zero"
End If
End Select
Next
If Tipo = 1 Then Lettere = StrConv(WkStringa, vbUpperCase)
If Tipo = 2 Then Lettere = StrConv(WkStringa, vbLowerCase)
If Tipo = 3 Then Lettere = StrConv(WkStringa, vbProperCase)
End Function