Haciendo consultas en los grupos de discucion encontre esta solucion:
Function num_letras(numero As Double) As String
Dim letras As String
Dim HuboCentavos As Boolean
Dim decimales As Double
decimales = numero - Int(numero)
numero = Int(numero)
Dim Numeros(90) As String
Numeros(0) = "cero "
Numeros(1) = "uno "
Numeros(2) = "dos "
Numeros(3) = "tres "
Numeros(4) = "cuatro "
Numeros(5) = "cinco "
Numeros(6) = "seis "
Numeros(7) = "siete "
Numeros(8) = "ocho "
Numeros(9) = "nueve "
Numeros(10) = "diez "
Numeros(11) = "once "
Numeros(12) = "doce "
Numeros(13) = "trece "
Numeros(14) = "catorce "
Numeros(15) = "quince "
Numeros(16) = "dieciséis "
Numeros(17) = "diecisiete "
Numeros(18) = "dieciocho "
Numeros(19) = "diecinueve "
Numeros(20) = "veinte "
Numeros(21) = "veintiuno "
Numeros(22) = "veintidós "
Numeros(23) = "veintitrés "
Numeros(24) = "veinticuatro "
Numeros(25) = "veinticinco "
Numeros(26) = "veintiséis "
Numeros(27) = "veintisiete "
Numeros(28) = "veintiocho "
Numeros(29) = "veintinueve "
Numeros(30) = "treinta "
Numeros(40) = "cuarenta "
Numeros(50) = "cincuenta "
Numeros(60) = "sesenta "
Numeros(70) = "setenta "
Numeros(80) = "ochenta "
Numeros(90) = "noventa "
Do
'*> Centenas de Millón
If (numero < 1000000000) And (numero >= 100000000) Then
If (Int(numero / 100000000) = 1) And ((numero - (Int(numero /
100000000) * 100000000)) < 1000000) Then
letras = letras & "Cien millones "
Else
Select Case Int(numero / 100000000)
Case 1
letras = letras & "Ciento"
Case 5
letras = letras & "Quinientos"
Case 7
letras = letras & "Setecientos"
Case 9
letras = letras & "Novecientos"
Case Else
letras = letras & Numeros(Int(numero / 100000000))
End Select
If (Int(numero / 100000000) <> 1) And (Int(numero / 100000000)
<> 5) And (Int(numero / 100000000) <> 7) And (Int(numero / 100000000) <> 9)
Then
letras = letras & "cientos "
Else
letras = letras & " "
End If
End If
numero = numero - (Int(numero / 100000000) * 100000000)
End If
'*> Decenas de Millón
If (numero < 100000000) And (numero >= 10000000) Then
If Int(numero / 1000000) < 16 Then
letras = letras & Numeros(Int(numero / 1000000))
letras = letras & " millones "
numero = numero - (Int(numero / 1000000) * 1000000)
Else
letras = letras & Numeros(Int(numero / 10000000) * 10)
numero = numero - (Int(numero / 10000000) * 10000000)
If numero > 1000000 Then
letras = letras & " y "
End If
End If
End If
'*> Unidades de Millón
If (numero < 10000000) And (numero >= 1000000) Then
If Int(numero / 1000000) = 1 Then
letras = letras & " Un millón "
Else
letras = letras & Numeros(Int(numero / 1000000))
letras = letras & " millones "
End If
numero = numero - (Int(numero / 1000000) * 1000000)
End If
'*> Centenas de Millar
If (numero < 1000000) And (numero >= 100000) Then
If (Int(numero / 100000) = 1) And ((numero - (Int(numero / 100000) *
100000)) < 1000) Then
letras = letras & "Cien mil "
Else
Select Case Int(numero / 100000)
Case 1
letras = letras & "Ciento"
Case 5
letras = letras & "Quinientos"
Case 7
letras = letras & "Setecientos"
Case 9
letras = letras & "Novecientos"
Case Else
letras = letras & Numeros(Int(numero / 100000))
End Select
If (Int(numero / 100000) <> 1) And (Int(numero / 100000) <> 5)
And (Int(numero / 100000) <> 7) And (Int(numero / 100000) <> 9) Then
letras = letras & "cientos "
Else
letras = letras & " mil "
End If
End If
numero = numero - (Int(numero / 100000) * 100000)
End If
'*> Decenas de Millar
If (numero < 100000) And (numero >= 10000) Then
If Int(numero / 1000) < 16 Then
letras = letras & Numeros(Int(numero / 1000))
letras = letras & " mil "
numero = numero - (Int(numero / 1000) * 1000)
Else
letras = letras & Numeros(Int(numero / 10000) * 10)
numero = numero - (Int((numero / 10000)) * 10000)
If numero > 1000 Then
letras = letras & " y "
Else
letras = letras & " mil "
End If
End If
End If
'*> Unidades de Millar
If (numero < 10000) And (numero >= 1000) Then
If Int(numero / 1000) = 1 Then
letras = letras & "Un"
Else
letras = letras & Numeros(Int(numero / 1000))
End If
letras = letras & " mil "
numero = numero - (Int(numero / 1000) * 1000)
End If
'*> Centenas
If (numero < 1000) And (numero > 99) Then
If (Int(numero / 100) = 1) And ((numero - (Int(numero / 100) * 100))
< 1) Then
letras = letras & "cien "
Else
Select Case Int(numero / 100)
Case 1
letras = letras & "ciento "
Case 2
letras = letras & "doscientos "
Case 3
letras = letras & "trescientos "
Case 4
letras = letras & "cuatrocientos "
Case 5
letras = letras & "quinientos "
Case 6
letras = letras & "seiscientos "
Case 7
letras = letras & "setecientos "
Case 8
letras = letras & "ochocientos "
Case 9
letras = letras & "novecientos "
Case Else
letras = letras & Numeros(Int(numero / 100))
End Select
End If
numero = numero - (Int(numero / 100) * 100)
End If
'*> Decenas
If (numero < 100) And (numero > 9) Then
If numero < 31 Then
letras = letras & Numeros(Int(numero))
numero = numero - Int(numero)
Else
letras = letras & Numeros(Int((numero / 10)) * 10)
numero = numero - (Int((numero / 10)) * 10)
If numero > 0.99 Then
letras = letras & "y "
End If
End If
End If
'*> Unidades
If (numero < 10) And (numero > 0.99) Then
letras = letras & Numeros(Int(numero))
numero = numero - Int(numero)
End If
Loop Until (numero = 0)
'*> Decimales
If (decimales > 0) Then
letras = letras & "con "
letras = letras & Format(decimales * 100, "00") & "/100 ctvos.-"
num_letras = letras
Exit Function
End If
num_letras = letras & "con 00/100 ctvos.-"
End Function
Pero al ejecutarla me da el:
error de compilacion
error de sintaxis
alguien me duede ayudar no tengo idea como hacerle y si me lo corriges mucho
te lo agradeceria, saludos.
Saludos
Leer las respuestas