Visual Basic - RE:Técnico Computación

Life is soft - evento anual de software empresarial
 
Vista:

RE:Técnico Computación

Publicado por Julio Meza (2 intervenciones) el 06/06/2005 20:14:39
Hola Juan, prueba con esta funcion. Primero pega el siguiente texto en un modulo bas para que puedas tener acceso desde cualquier parte de tu aplicacion

Function Numero_a_Letras(ByVal Numero As Double) As String
Dim vl_NumEnt As String
Dim vl_Decimales As String
Dim X As String, n As Integer

If Numero = 0 Then Numero_a_Letras = "Cero": Exit Function

' --- Convertimos a Positivo Los Valores Negativos
If Numero < 0 Then Numero = Numero * -1

' --- Capturamos Valor Entero y Decimal del Numero Solicitado
vl_NumEnt = Trim(CStr(Fix(Numero)))
vl_Decimales = Format$((Numero - vl_NumeroEntero), ".00")
vl_Decimales = Right(vl_Decimales, 2) + "/100"

Do While Len(vl_NumEnt) < 9
vl_NumEnt = "0" & vl_NumEnt
Loop

X = ""

For n = 7 To 1 Step -3
' --- Verifica Si No Es Cero
If CInt(Mid(vl_NumEnt, n, 3)) <> 0 Then
Select Case CInt(Mid(vl_NumEnt, n + 1, 2))
Case 10
X = "diez " & X
Case 11
X = "once " & X
Case 12
X = "doce " & X
Case 13
X = "trece " & X
Case 14
X = "catorce " & X
Case 15
X = "quince " & X
Case 16
X = "dieciseis " & X
Case 17
X = "diecisiete " & X
Case 18
X = "dieciocho " & X
Case 19
X = "diecinueve " & X
Case 21
If n > 1 Then
X = "veintiuno " & X
Else
X = "veintiun " & X
End If
Case 22
X = "veintidos " & X
Case 23
X = "veintitres " & X
Case 24
X = "veinticuatro " & X
Case 25
X = "veinticinco " & X
Case 26
X = "veitiseis " & X
Case 27
X = "veintisiete " & X
Case 28
X = "veintiocho " & X
Case 29
X = "veintinueve " & X
Case Else
' Otros Casos
Select Case CInt(Mid(vl_NumEnt, n + 2, 1))
Case 1
Select Case n
Case 7
X = "y uno " + X
Case 4
X = "y un " & X
Case 1
X = "y un " & X
End Select
Case 2
X = "y dos " & X
Case 3
X = "y tres " & X
Case 4
X = "y cuatro " & X
Case 5
X = "y cinco " & X
Case 6
X = "y seis " & X
Case 7
X = "y siete " & X
Case 8
X = "y ocho " & X
Case 9
X = "y nueve " & X
End Select

' --- Decenas
Select Case CInt(Mid(vl_NumEnt, n + 1, 1))
Case 2
X = "veinte " & X
Case 3
X = "treinta " & X
Case 4
X = "cuarenta " & X
Case 5
X = "cincuenta " & X
Case 6
X = "sesenta " & X
Case 7
X = "setenta " & X
Case 8
X = "ochenta " & X
Case 9
X = "noventa " & X
End Select

If Left(X, 1) = "y" Then X = Right(X, Len(X) - 2)
End Select

' --- Centenas
Select Case CInt(Mid(vl_NumEnt, n, 1))
Case 1
If CInt(Mid(vl_NumEnt, n + 1, 2)) = 0 Then
X = "cien " & X
Else
X = "ciento " & X
End If
Case 2
X = "doscientos " & X
Case 3
X = "trescientos " & X
Case 4
X = "cuatrocientos " & X
Case 5
X = "quinientos " & X
Case 6
X = "seiscientos " & X
Case 7
X = "setecientos " & X
Case 8
X = "ochocientos " & X
Case 9
X = "novecientos " & X
End Select

' --- Terminacion
If Left(X, 1) = "y" Then X = Right(X, Len(X) - 2)

' --- Millones
If n = 4 Then
If CInt(Left(vl_NumEnt, 3)) = 1 Then
X = "millon " & X
Else
If CInt(Left(vl_NumEnt, 3)) <> 0 Then
X = "millones " & X
End If
End If
If CInt(Right(vl_NumEnt, 3)) = 0 Then
X = X + "mil "
End If
Else
' --- Miles
If n = 7 Then
If CInt(Mid(vl_NumEnt, 4, 3)) = 1 Then
X = "mil " & X
Else
If CInt(Mid(vl_NumEnt, 4, 3)) <> 0 Then
X = "mil " & X
End If
End If
End If
End If
End If
Next n
Numero_a_Letras = X + " " + vl_Decimales + " " + vl_NombreMoneda
Numero_a_Letras = UCase(Numero_a_Letras)
End Function

Nota que hay una variable llamada vl_NombreMoneda, no se de donde eres yo soy de el salvador y nuestra moneda legal es el US$. Asi que captura en esta variable el nombre de la moneda o simplemente sustituyelo por tu moneda local.

Luego para ejecutarlo digita la siguiente instruccion:

Declara una variable local vl_ValorLetras que es donde te quedara el valor numerico convertido a letras:

vl_ValorLetras = Numero_a_Letras(Variable que Contiene el valor Numerico)

espero que te sirva, saludos.

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder