Tema: Visual Basic
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 16/07/2004, 09:40
rsiles
 
Fecha de Ingreso: abril-2004
Ubicación: Managua
Mensajes: 150
Antigüedad: 21 años
Puntos: 0
Option Explicit
Global gOpcionMil As Boolean
Public Function Redondear(dblnToR As String, Optional intCntDec As Integer) As String

Dim dblPot As String
Dim dblF As String

If dblnToR < 0 Then dblF = -0.5 Else: dblF = 0.5
dblPot = 10 ^ intCntDec
Redondear = Fix(dblnToR * dblPot * (1 + 1E-16) + dblF) / dblPot

End Function
Public Function EnLetras(numero As String) As String

Dim BandBilion As Boolean
Dim b, paso, cifra As Integer
Dim expresion, entero, deci, flag, valor As String




flag = "N"

'** AQUI REVISAMOS SI EL MONTO TIENE PARTE DECIMAL.
For paso = 1 To Len(numero) 'Determina cuantos caracteres tiene la cadena
If Mid(numero, paso, 1) = "." Or Mid(numero, paso, 1) = "," Then 'dependiendo de la región
flag = "S"
Else
If flag = "N" Then
entero = entero + Mid(numero, paso, 1) 'Extae la parte entera del numero
Else
deci = deci + Mid(numero, paso, 1) 'Extrae la parte decimal del numero
End If
End If
Next paso

'DEFINIMOS VALOR EN LAS VARIABLES
'CIFRA Y VALOR PARA USARLAS COMO
'BANDERAS CONDICIONALES.

cifra = Len(entero)

Select Case cifra
Case Is = 1
valor = "unidad" 'Sin usar
Case Is = 2
valor = "decenas" 'Sin usar
Case Is = 3
valor = "centenas" 'Sin usar
Case Is = 4, 5, 6
valor = "miles" 'Usado
Case Is = 7, 8, 9
valor = "milion" 'Usado
Case Is = 10, 11, 12
valor = "miliardos" 'Usado
Case Is = 13, 14, 15
valor = "biliones" 'Usado
End Select

'*** SI LA CIFRA TIENE VALOR DECIMAL LO ASIGNAMOS AQUI.
If Len(deci) >= 1 Then
If Len(deci) = 1 Then deci = deci & "0"
deci = deci & "/100." 'Antes tenia & "0" "/100."
Else
deci = "00/100."
End If


flag = "N"
If Val(numero) >= -999999999999999# And Val(numero) <= 999999999999999# Then 'si el numero esta dentro de 0 a 999.999.999
For paso = Len(entero) To 1 Step -1
b = Len(entero) - (paso - 1)
Select Case paso
Case 3, 6, 9, 12, 15
Select Case Mid(entero, b, 1)
Case "1"
If Mid(entero, b + 1, 1) = "0" And Mid(entero, b + 2, 1) = "0" Then
expresion = expresion & "cien "
Else
expresion = expresion & "ciento "
End If
Case "2"
expresion = expresion & "doscientos "
Case "3"
expresion = expresion & "trescientos "
Case "4"
expresion = expresion & "cuatrocientos "
Case "5"
expresion = expresion & "quinientos "
Case "6"
expresion = expresion & "seiscientos "
Case "7"
expresion = expresion & "setecientos "
Case "8"
expresion = expresion & "ochocientos "
Case "9"
expresion = expresion & "novecientos "

End Select

Case 2, 5, 8, 11, 14
Select Case Mid(entero, b, 1)
Case "1"
If Mid(entero, b + 1, 1) = "0" Then
flag = "S"
expresion = expresion & "diez "
End If
If Mid(entero, b + 1, 1) = "1" Then
flag = "S"
expresion = expresion & "once "
End If
If Mid(entero, b + 1, 1) = "2" Then
flag = "S"
expresion = expresion & "doce "
End If
If Mid(entero, b + 1, 1) = "3" Then
flag = "S"
expresion = expresion & "trece "
End If
If Mid(entero, b + 1, 1) = "4" Then
flag = "S"
expresion = expresion & "catorce "
End If
If Mid(entero, b + 1, 1) = "5" Then
flag = "S"
expresion = expresion & "quince "
End If
If Mid(entero, b + 1, 1) > "5" Then
flag = "N"
expresion = expresion & "dieci"
End If

Case "2"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "veinte "
flag = "S"
Else
expresion = expresion & "veinti"
flag = "N"
End If

Case "3"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "treinta "
flag = "S"
Else
expresion = expresion & "treinta y "
flag = "N"
End If

Case "4"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "cuarenta "
flag = "S"
Else
expresion = expresion & "cuarenta y "
flag = "N"
End If

Case "5"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "cincuenta "
flag = "S"
Else
expresion = expresion & "cincuenta y "
flag = "N"
End If

Case "6"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "sesenta "
flag = "S"
Else
expresion = expresion & "sesenta y "
flag = "N"
End If

Case "7"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "setenta "
flag = "S"
Else
expresion = expresion & "setenta y "
flag = "N"
End If

Case "8"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "ochenta "
flag = "S"
Else
expresion = expresion & "ochenta y "
flag = "N"
End If

Case "9"
If Mid(entero, b + 1, 1) = "0" Then
expresion = expresion & "noventa "
flag = "S"
Else
expresion = expresion & "noventa y "
flag = "N"
End If

Case "0"
'expresion = expresion & ""
flag = "N"
End Select