Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/01/2005, 09:38
Avatar de freegirl
freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 21 años, 4 meses
Puntos: 156
Está en Visual Basic 6, pero bueno, más o menos, es lo mismo.

Cita:
Public Function EnLetras(numero As String) As String

Dim b, paso As Integer

Dim expresion, entero, deci, flag As String



flag = "N"

For paso = 1 To Len(numero)

If Mid(numero, paso, 1) = "." Then

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



If Len(deci) = 1 Then

deci = deci & "0"

End If



flag = "N"

If Val(numero) >= -999999999 And Val(numero) <= 999999999 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

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

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

End Select