Tema: Texto
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/08/2007, 21:19
Avatar de Linterns
Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 5 meses
Puntos: 11
Re: Texto

create una funcion personalizada

Código PHP:
Function num_letras(Numero As Double) As String
Dim Letras 
As String
Dim HuboCentavos 
As Boolean
Dim Decimales 
As Double
Decimales 
Numero Int(Numero)
Numero Int(Numero)
Dim Numeros(90) As String
Numeros
(0) = "cero"
Numeros(1) = "uno"
Numeros(2) = "dos"
Numeros(3) = "tres"
Numeros(4) = "cuatro"
Numeros(5) = "cinco"
Numeros(6) = "seis"
Numeros(7) = "siete"
Numeros(8) = "ocho"
Numeros(9) = "nueve"
Numeros(10) = "diez"
Numeros(11) = "once"
Numeros(12) = "doce"
Numeros(13) = "trece"
Numeros(14) = "catorce"
Numeros(15) = "quince"
Numeros(20) = "veinte"
Numeros(30) = "treinta"
Numeros(40) = "cuarenta"
Numeros(50) = "cincuenta"
Numeros(60) = "sesenta"
Numeros(70) = "setenta"
Numeros(80) = "ochenta"
Numeros(90) = "noventa"
Do
    
'*---> Centenas de Millón
    If (Numero < 1000000000) And (Numero >= 100000000) Then
        If (Int(Numero / 100000000) = 1) And ((Numero - (Int(Numero / 100000000) * 100000000)) < 1000000) Then
            Letras = Letras & "cien millones "
        Else
            Select Case Int(Numero / 100000000)
            Case 1
                Letras = Letras & "ciento"
            Case 5
                Letras = Letras & "quinientos"
            Case 7
                Letras = Letras & "setecientos"
            Case 9
                Letras = Letras & "novecientos"
            Case Else
                Letras = Letras & Numeros(Int(Numero / 100000000))
            End Select
            If (Int(Numero / 100000000) <> 1) And (Int(Numero / 100000000) <> 5) And (Int(Numero / 100000000) <> 7) And (Int(Numero / 100000000) <> 9) Then
                Letras = Letras & "cientos "
            Else
                Letras = Letras & " "
            End If
        End If
        Numero = Numero - (Int(Numero / 100000000) * 100000000)
    End If
    '
*---> Decenas de Millón
    
If (Numero 100000000) And (Numero >= 10000000Then
        
If Int(Numero 1000000) < 16 Then
            Letras 
Letras Numeros(Int(Numero 1000000))
            
Letras Letras " millones "
            
Numero Numero - (Int(Numero 1000000) * 1000000)
        Else
            
Letras Letras Numeros(Int(Numero 10000000) * 10)
            
Numero Numero - (Int(Numero 10000000) * 10000000)
            If 
Numero 1000000 Then
                Letras 
Letras " y "
            
End If
        
End If
    
End If
    
'*---> Unidades de Millón
    If (Numero < 10000000) And (Numero >= 1000000) Then
        If Int(Numero / 1000000) = 1 Then
            Letras = Letras & " un millón "
        Else
            Letras = Letras & Numeros(Int(Numero / 1000000))
            Letras = Letras & " millones "
        End If
        Numero = Numero - (Int(Numero / 1000000) * 1000000)
    End If
    '
*---> Centenas de Millar
    
If (Numero 1000000) And (Numero >= 100000Then
        
If (Int(Numero 100000) = 1) And ((Numero - (Int(Numero 100000) * 100000)) < 1000Then
            Letras 
Letras "cien mil "
        
Else
            
Select Case Int(Numero 100000)
            Case 
1
                Letras 
Letras "ciento"
            
Case 5
                Letras 
Letras "quinientos"
            
Case 7
                Letras 
Letras "setecientos"
            
Case 9
                Letras 
Letras "novecientos"
            
Case Else
                
Letras Letras Numeros(Int(Numero 100000))
            
End Select
            
If (Int(Numero 100000) <> 1) And (Int(Numero 100000) <> 5) And (Int(Numero 100000) <> 7) And (Int(Numero 100000) <> 9Then
                Letras 
Letras "cientos "
            
Else
                
Letras Letras " "
            
End If
        
End If
        
Numero Numero - (Int(Numero 100000) * 100000)
    
End If
    
'*---> Decenas de Millar
    If (Numero < 100000) And (Numero >= 10000) Then
        If Int(Numero / 1000) < 16 Then
            Letras = Letras & Numeros(Int(Numero / 1000))
            Letras = Letras & " mil "
            Numero = Numero - (Int(Numero / 1000) * 1000)
        Else
            Letras = Letras & Numeros(Int(Numero / 10000) * 10)
            Numero = Numero - (Int((Numero / 10000)) * 10000)
            If Numero > 1000 Then
                Letras = Letras & " y "
            Else
                Letras = Letras & " mil "
            End If
        End If
    End If
    '
*---> Unidades de Millar
    
If (Numero 10000) And (Numero >= 1000Then
        
If Int(Numero 1000) = 1 Then
            Letras 
Letras "un"
        
Else
            
Letras Letras Numeros(Int(Numero 1000))
        
End If
        
Letras Letras " mil "
        
Numero Numero - (Int(Numero 1000) * 1000)
    
End If
    
'*---> Centenas
    If (Numero < 1000) And (Numero > 99) Then
        If (Int(Numero / 100) = 1) And ((Numero - (Int(Numero / 100) * 100)) < 1) Then
            Letras = Letras & "cien "
        Else
            Select Case Int(Numero / 100)
            Case 1
                Letras = Letras & "ciento"
            Case 5
                Letras = Letras & "quinientos"
            Case 7
                Letras = Letras & "setecientos"
            Case 9
                Letras = Letras & "novecientos"
            Case Else
                Letras = Letras & Numeros(Int(Numero / 100))
            End Select
            If (Int(Numero / 100) <> 1) And (Int(Numero / 100) <> 5) And (Int(Numero / 100) <> 7) And (Int(Numero / 100) <> 9) Then
                Letras = Letras & "cientos "
            Else
                Letras = Letras & " "
            End If
        End If
        Numero = Numero - (Int(Numero / 100) * 100)
    End If
    '
*---> Decenas
    
If (Numero 100) And (Numero 9Then
        
If Numero 16 Then
            Letras 
Letras Numeros(Int(Numero))
            
Numero Numero Int(Numero)
        Else
            
Letras Letras Numeros(Int((Numero 10)) * 10)
            
Numero Numero - (Int((Numero 10)) * 10)
            If 
Numero 0.99 Then
                Letras 
Letras " y "
            
End If
        
End If
    
End If
    
'*---> Unidades
    If (Numero < 10) And (Numero > 0.99) Then
       Letras = Letras & Numeros(Int(Numero))
       Numero = Numero - Int(Numero)
    End If
Loop Until (Numero = 0)
'
*---> Decimales
If (Decimales 0Then
    Letras 
Letras " con "
    
Letras Letras Format(Decimales 100"00") & "/100 centavos"
End If
num_letras Letras
End 
Function 
y ahora ya en la celda que la necesites solo llama la funcion asi

Código PHP:
=num_letras(B11
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***