numero a letras
pequeña aplicacion que hace lo mismo que el ocx
en un textbox ingresas 43600 y te devuelve
cuarenta y tres mil seiscientos 00/100 M/N
pesa apenas 43kb envíenme un mail y se los mando
espero no sean mas de 50
en un textbox ingresas 43600 y te devuelve
cuarenta y tres mil seiscientos 00/100 M/N
pesa apenas 43kb envíenme un mail y se los mando
espero no sean mas de 50
como la adjunto para que puedan bajarla desde este mismo post, o debo hacerlo desde la opcion ¡Colabora!?
Ok. entiendo aqui les va...
en un form colocar 2 textbox un0 con la propiedad mutiline a True que es el que traducirá a letras y 1 commandButton para dar la orden de traducir
Espero que les sirva, ya que amí me ha servido de mucho. Hago incapié que este codigo no fué escrito por mi, pero me lo dieron muy amablemente en otro foro
Public cnum2let As Num2LetEsp
Private cALetra As New Num2LetEsp
Option Explicit
Private Sub Command1_Click()
'Conversion a Letras en Español con Pesos
Dim mstrMoneda As String
Dim txtndos As String
' Indica que la moneda es Pesos
' Esta variable puede ser modificada directamente en el form
' pudiendo cambiar con unas pequeñas modificaciones al modulo
' el tipo de modulo.
mstrMoneda = "Pesos"
cALetra.Moneda = mstrMoneda
'Inicia el Proceso para identificar la cantidad a convertir
If Val(txtCantidad) > 0 Then
txtndos = Format(Val(txtCantidad), "Currency")
cALetra.Numero = Val(txtCantidad)
txtLetra = cALetra.ALetra
Else
txtCantidad = ""
txtndos = ""
End If
End Sub
Ahora en un módulo de clase esto...
Option Explicit
'variables locales que contienen valores de propiedad
Private astrConversor(0 To 2, 1 To 9) As String
Private mvarNumero As Variant ' copia local
Private mstrMoneda As String ' copia local
Public Property Let Numero(ByVal vData As Variant)
If IsNumeric(vData) Then
mvarNumero = vData
End If
End Property
Public Property Get Numero() As Variant
Numero = mvarNumero
End Property
Public Function ALetra() As String
' Var
Dim i As Integer
Dim intProceder As Integer
Dim intPosNumero As Integer
Dim intLongNumero As Integer
Dim strNumero As String
Dim strLetraNumero As String
' Establece los valores iniciales para las Variables
mvarNumero = Abs(mvarNumero) 'Deberá ser positivo
strNumero = CStr(Fix(mvarNumero)) 'A Cadena
intLongNumero = Len(strNumero)
intPosNumero = intLongNumero
' Cicle por el total de caracteres del número
For i = 1 To intLongNumero
intProceder = True
If (intPosNumero Mod 3) = 1 Then
If intLongNumero > intPosNumero Then
Select Case Mid(strNumero, i - 1, 2)
Case "00"
If UCase(Right(strLetraNumero, 7)) = "CIENTO " Then
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 7)
strLetraNumero = strLetraNumero & "Cien "
End If
Case "11"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Once "
intProceder = False
Case "12"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Doce "
intProceder = False
Case "13"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Trece "
intProceder = False
Case "14"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Catorce "
intProceder = False
Case "15"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Quince "
intProceder = False
Case "16", "17", "18", "19"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 2)
strLetraNumero = strLetraNumero & "ci"
Case "21" To "29"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 2)
strLetraNumero = strLetraNumero & "i"
Case Else
If Val(Mid(strNumero, i, 1)) > 0 And Val(Mid(strNumero, i - 1, 1)) > 0 Then
strLetraNumero = strLetraNumero & "y "
End If
End Select
End If
End If
If Val(Mid(strNumero, i, 1)) > 0 And intProceder Then
strLetraNumero = strLetraNumero & astrConversor((intPosNumero Mod 3), Val(Mid(strNumero, i, 1))) & " "
End If
Select Case intPosNumero
Case 4
If Right(strLetraNumero, 9) <> "millones " And Right(strLetraNumero, 13) <> "mil millones " And Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "mil "
End If
Case 7
If Right(strLetraNumero, 13) <> "mil millones " And Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "millones "
End If
Case 10
If Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "millardos "
End If
Case 13
strLetraNumero = strLetraNumero & "billones "
Case Else
End Select
intPosNumero = intPosNumero - 1
Next i
strLetraNumero = Left(strLetraNumero, 1) & LCase(Mid(strLetraNumero, 2))
If Numero <> Fix(Numero) Then
i = (Numero - Fix(Numero)) * 100
strLetraNumero = strLetraNumero & LCase(mstrMoneda) & Str(i)
Else
strLetraNumero = strLetraNumero & LCase(mstrMoneda)
End If
If UCase(mstrMoneda) = "PESOS" Then
strLetraNumero = "**" & strLetraNumero & ".-" End If
ALetra = strLetraNumero
End Function
Private Sub Asigna()
' Asigna los Valores al arreglo astrConversor
astrConversor(0, 1) = "Ciento"
astrConversor(0, 2) = "Doscientos"
astrConversor(0, 3) = "Trescientos"
astrConversor(0, 4) = "Cuatrocientos"
astrConversor(0, 5) = "Quinientos"
astrConversor(0, 6) = "Seiscientos"
astrConversor(0, 7) = "Setecientos"
astrConversor(0, 8) = "Ochocientos"
astrConversor(0, 9) = "Novecientos"
astrConversor(1, 1) = "Un"
astrConversor(1, 2) = "Dos"
astrConversor(1, 3) = "Tres"
astrConversor(1, 4) = "Cuatro"
astrConversor(1, 5) = "Cinco"
astrConversor(1, 6) = "Seis"
astrConversor(1, 7) = "Siete"
astrConversor(1, 8) = "Ocho"
astrConversor(1, 9) = "Nueve"
astrConversor(2, 1) = "Diez"
astrConversor(2, 2) = "Veinte"
astrConversor(2, 3) = "Treinta"
astrConversor(2, 4) = "Cuarenta"
astrConversor(2, 5) = "Cincuenta"
astrConversor(2, 6) = "Sesenta"
astrConversor(2, 7) = "Setenta"
astrConversor(2, 8) = "Ochenta"
astrConversor(2, 9) = "Noventa"
End Sub
Public Property Get Moneda() As String
Moneda = mstrMoneda
End Property
Public Property Let Moneda(ByVal vNewValue As String)
mstrMoneda = vNewValue
End Property
Private Sub Class_Initialize()
Asigna
mstrMoneda = "pesos"
End Sub
Private Sub Class_Terminate()
Erase astrConversor
End Sub
en un form colocar 2 textbox un0 con la propiedad mutiline a True que es el que traducirá a letras y 1 commandButton para dar la orden de traducir
Espero que les sirva, ya que amí me ha servido de mucho. Hago incapié que este codigo no fué escrito por mi, pero me lo dieron muy amablemente en otro foro
Public cnum2let As Num2LetEsp
Private cALetra As New Num2LetEsp
Option Explicit
Private Sub Command1_Click()
'Conversion a Letras en Español con Pesos
Dim mstrMoneda As String
Dim txtndos As String
' Indica que la moneda es Pesos
' Esta variable puede ser modificada directamente en el form
' pudiendo cambiar con unas pequeñas modificaciones al modulo
' el tipo de modulo.
mstrMoneda = "Pesos"
cALetra.Moneda = mstrMoneda
'Inicia el Proceso para identificar la cantidad a convertir
If Val(txtCantidad) > 0 Then
txtndos = Format(Val(txtCantidad), "Currency")
cALetra.Numero = Val(txtCantidad)
txtLetra = cALetra.ALetra
Else
txtCantidad = ""
txtndos = ""
End If
End Sub
Ahora en un módulo de clase esto...
Option Explicit
'variables locales que contienen valores de propiedad
Private astrConversor(0 To 2, 1 To 9) As String
Private mvarNumero As Variant ' copia local
Private mstrMoneda As String ' copia local
Public Property Let Numero(ByVal vData As Variant)
If IsNumeric(vData) Then
mvarNumero = vData
End If
End Property
Public Property Get Numero() As Variant
Numero = mvarNumero
End Property
Public Function ALetra() As String
' Var
Dim i As Integer
Dim intProceder As Integer
Dim intPosNumero As Integer
Dim intLongNumero As Integer
Dim strNumero As String
Dim strLetraNumero As String
' Establece los valores iniciales para las Variables
mvarNumero = Abs(mvarNumero) 'Deberá ser positivo
strNumero = CStr(Fix(mvarNumero)) 'A Cadena
intLongNumero = Len(strNumero)
intPosNumero = intLongNumero
' Cicle por el total de caracteres del número
For i = 1 To intLongNumero
intProceder = True
If (intPosNumero Mod 3) = 1 Then
If intLongNumero > intPosNumero Then
Select Case Mid(strNumero, i - 1, 2)
Case "00"
If UCase(Right(strLetraNumero, 7)) = "CIENTO " Then
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 7)
strLetraNumero = strLetraNumero & "Cien "
End If
Case "11"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Once "
intProceder = False
Case "12"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Doce "
intProceder = False
Case "13"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Trece "
intProceder = False
Case "14"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Catorce "
intProceder = False
Case "15"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 5)
strLetraNumero = strLetraNumero & "Quince "
intProceder = False
Case "16", "17", "18", "19"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 2)
strLetraNumero = strLetraNumero & "ci"
Case "21" To "29"
strLetraNumero = Left(strLetraNumero, Len(strLetraNumero) - 2)
strLetraNumero = strLetraNumero & "i"
Case Else
If Val(Mid(strNumero, i, 1)) > 0 And Val(Mid(strNumero, i - 1, 1)) > 0 Then
strLetraNumero = strLetraNumero & "y "
End If
End Select
End If
End If
If Val(Mid(strNumero, i, 1)) > 0 And intProceder Then
strLetraNumero = strLetraNumero & astrConversor((intPosNumero Mod 3), Val(Mid(strNumero, i, 1))) & " "
End If
Select Case intPosNumero
Case 4
If Right(strLetraNumero, 9) <> "millones " And Right(strLetraNumero, 13) <> "mil millones " And Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "mil "
End If
Case 7
If Right(strLetraNumero, 13) <> "mil millones " And Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "millones "
End If
Case 10
If Right(strLetraNumero, 9) <> "billones " Then
strLetraNumero = strLetraNumero & "millardos "
End If
Case 13
strLetraNumero = strLetraNumero & "billones "
Case Else
End Select
intPosNumero = intPosNumero - 1
Next i
strLetraNumero = Left(strLetraNumero, 1) & LCase(Mid(strLetraNumero, 2))
If Numero <> Fix(Numero) Then
i = (Numero - Fix(Numero)) * 100
strLetraNumero = strLetraNumero & LCase(mstrMoneda) & Str(i)
Else
strLetraNumero = strLetraNumero & LCase(mstrMoneda)
End If
If UCase(mstrMoneda) = "PESOS" Then
strLetraNumero = "**" & strLetraNumero & ".-" End If
ALetra = strLetraNumero
End Function
Private Sub Asigna()
' Asigna los Valores al arreglo astrConversor
astrConversor(0, 1) = "Ciento"
astrConversor(0, 2) = "Doscientos"
astrConversor(0, 3) = "Trescientos"
astrConversor(0, 4) = "Cuatrocientos"
astrConversor(0, 5) = "Quinientos"
astrConversor(0, 6) = "Seiscientos"
astrConversor(0, 7) = "Setecientos"
astrConversor(0, 8) = "Ochocientos"
astrConversor(0, 9) = "Novecientos"
astrConversor(1, 1) = "Un"
astrConversor(1, 2) = "Dos"
astrConversor(1, 3) = "Tres"
astrConversor(1, 4) = "Cuatro"
astrConversor(1, 5) = "Cinco"
astrConversor(1, 6) = "Seis"
astrConversor(1, 7) = "Siete"
astrConversor(1, 8) = "Ocho"
astrConversor(1, 9) = "Nueve"
astrConversor(2, 1) = "Diez"
astrConversor(2, 2) = "Veinte"
astrConversor(2, 3) = "Treinta"
astrConversor(2, 4) = "Cuarenta"
astrConversor(2, 5) = "Cincuenta"
astrConversor(2, 6) = "Sesenta"
astrConversor(2, 7) = "Setenta"
astrConversor(2, 8) = "Ochenta"
astrConversor(2, 9) = "Noventa"
End Sub
Public Property Get Moneda() As String
Moneda = mstrMoneda
End Property
Public Property Let Moneda(ByVal vNewValue As String)
mstrMoneda = vNewValue
End Property
Private Sub Class_Initialize()
Asigna
mstrMoneda = "pesos"
End Sub
Private Sub Class_Terminate()
Erase astrConversor
End Sub
pasate la aplicacion espero que me la puedas mandar ami corre es: [email protected]
gracias.
atte. EDGAR
gracias.
atte. EDGAR
