
10/01/2005, 09:38
|
 | 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
|