numero a texto

07/07/2007 - 01:14 por James | Informe spam
Siento desilusionar a muchos y otros que se moriran de risa, sin embargo
prefiero pasar una vez por tonto que toda mi vida; pero como es esa vaina de
"insertar modulo en VB y que luego te funciona en excel y que pega esto con
ctrl+V al portapapeles y " quisiera alguien ayudarme pero en "español"
por favor. Estoy trabajando con Office 2003 y WXP.
Ya tendo la ayuda acerca de las funciones que hay que "pegar" pero ni sabía
que tenía instalado el VB, mucho menos para que servía.
Disculpen mi alta ignorancia y la quitadera de su valioso tiempo. y sobre
todo agradeceré de verdad a la(s) persona(s) que se tome un tiempito para
compartir de su conocimiento con este ignorantillo.
 

Leer las respuestas

#1 Abraham
07/07/2007 - 01:24 | Informe spam
Hola. Primero que nada, no es lo mismo VB que VBA. Lo que tienes
"instalado" es VBA. Este viene con el paquete de office, es decir,
podria decirse que es "parte" de los programas de office (ojo, no de
todos). El VBA, por si solo, no funciona, a diferencia del VB.

En tonces, al presiona, en tu excel, ALT+F11, abres el editor de VBA
de excel. El trabajo aqui (la programacion!) se realiza en este caso
en modulo, es decir, ahi se coloca el "codigo" de programacion. Anda
a INSERTAR -y dale MODULOS. Se abrira casi al "centro" una parte
blanca sin contenido. Ahi pega tu rutina de convertir numero en
letras. Copia esto que te dejo (CTRL+C), anda al modulo del que hemos
hablado, coloca el cursor ahi y pegalo (CTRL+V)


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) = "un"
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) = "dieciseis"
Numeros(17) = "diecisiete"
Numeros(18) = "dieciocho"
Numeros(19) = "diecinueve"
Numeros(20) = "veinte"
Numeros(21) = "veintiun"
Numeros(22) = "veintidos"
Numeros(23) = "veintitres"
Numeros(24) = "veinticuatro"
Numeros(25) = "veinticinco"
Numeros(26) = "veintiseis"
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 millon "
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 & " "
End If

If (Int(Numero / 100000) = 1) And ((Numero - (Int(Numero / 100000) *
100000)) < 1000) Then
Letras = Letras & " "
Else
Select Case (Numero / 100000)
Case 2
Letras = Letras & " mil "
Case 3
Letras = Letras & " mil "
Case 4
Letras = Letras & " mil "
Case 5
Letras = Letras & " mil "
Case 6
Letras = Letras & " mil "
Case 7
Letras = Letras & " mil "
Case 8
Letras = Letras & " mil "
Case 9
Letras = Letras & " mil "
End Select
End If

If (Numero > 100000) And (Int(Numero / 1000) <> (Numero / 1000)) And
((Int((Int(Numero / 1000)) / 100)) = ((Int(Numero / 1000)) / 100))
Then
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 5
Letras = Letras & "quinientos"
Case 7
Letras = Letras & "setecientos"
Case 9
Letras = Letras & "novecientos"
Case Else
Letras = Letras & Numeros(Int(Numero / 100))
End Select
If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And
(Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
Letras = Letras & "cientos "
Else
Letras = Letras & " "
End If
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 & " y "
Letras = Letras & Format(Decimales * 100, "00") & "/100 nuevos
soles"
num_letras = Letras
Exit Function
End If
num_letras = Letras & " y 00/100 nuevos soles"
End Function


Como esta es una Funcion propia (UDF), actuara de modo similar a una
del excel. Cierra el editor de VBA. Ahora en cualquier hoja, en por
ejemplo, la celda A1, coloca:

2500

Ahora en, por ejemplo B1, coloca =Num_letras(A1)

Y aparecere "Dos mil quinientos soles y 00/100 nuevos soles"

Cualquier duda, aqui estamos

Abraham

Preguntas similares