RE:Funcion Convertir Numeros a Palabras
ESPERO QUE NO SEA UN PROBLEMA PUBLICAR ESTO. NO SÉ PORQUE NADIE LO HACE EN ESTA PÁGINA. ESPERO QUE OS SIRVA.
************ USO **********
SI EN LA CELDA B1 ESCRIBÍS LA FÓRMULA: ConvierteNumeroALetra(A1) TRANSFORMARÁ EL NÚMERO DE LA CELDA A1 EN LETRAS.
************ CÓDIGO ************
Function ConvierteNumeroALetra(Numero)
'ESTA FUNCIÓN TRANSFORMA UN NÚMERO INTRODUCIDO COMO ARGUMENTO
'HASTA 999.999.999'99 EN LETRAS
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'DECLARAMOS LAS VARIABLES QUE EMPLEAREMOS
Dim Texto
Dim Millones
Dim Miles
Dim Cientos
Dim Decimales
Dim Cadena
Dim CadenaMillones
Dim CadenaMiles
Dim CadenaCientos
Dim CadenaDecimales
'METEMOS EL ARGUMENTO DE LA FUNCIÓN EN LA VARIABLE Texto
Texto = Numero
'LE DAMOS FORMATO DE NUMERO CON 2 DECIMALES
Texto = FormatNumber(Texto, 2)
'INSERTAMOS 14 ESPACIOS DELANTE PARA CURARNOS EN SALUD Y
'COGEMOS SÓLO LOS 14 ÚLTIMOS CARACTERES DE LA CADENA
Texto = Right(Space(14) & Texto, 14)
'SABIENDO QUE EL NÚMERO AHORA TIENE 14 CARACTERES (CON ESPACIOS A LA
'IZQUIERDA SI HA SIDO MÁS CORTO DE 14 CIFRAS) TRABAJAMOS CORTANDO DE TRES
'EN TRES DE IZQUIERDA A DERECHA, TENIENDO EN CUENTA QUE HAY PUNTOS DE MILES
'USUALMENTE EN LA CONFIGURACIÓN REGIONAL DE WINDOWS PARA EL FORMATO DE NUMEROS
' If Mid(Texto, 10, 1) = "." Then 'PARA VER SI HAY PUNTOS DE MILES MIRAMOS
Millones = Mid(Texto, 1, 3) 'EL CARACTER 10 PARA VER SI ES UN PUNTO.
Miles = Mid(Texto, 5, 3) '¡¡¡¡¡PERO NO SÉ PORQUÉ NO FUNCIONA!!!!!
Cientos = Mid(Texto, 9, 3)
Decimales = Mid(Texto, 13, 2)
' Else
' Millones = Mid(Texto, 3, 3)
' Miles = Mid(Texto, 6, 3)
' Cientos = Mid(Texto, 9, 3)
' Decimales = Mid(Texto, 13, 2)
' End If
'PARA PODER UTILIZAR LA FUNCIÓN Convierte3Cifras CON LOS DECIMALES
'LES PONEMOS UN CERO DELANTE
Decimales = "0" & Decimales
'UTILIZAMOS LA FUNCION ConvierteCifra SOBRE CADA UNA DE LAS CADENAS
'RESULTANTES PARA HACER SUBCADENAS QUE LUEGO DARÁN LA CADENA FINAL
CadenaMillones = Convierte3Cifras(Millones)
CadenaMiles = Convierte3Cifras(Miles)
CadenaCientos = Convierte3Cifras(Cientos)
CadenaDecimales = Convierte3Cifras(Decimales)
'COMPROBAMOS LAS CADENAS (SIN ESPACIOS A IZQUIERDA Y DERECHA) PARA
'VER SI TENEMOS 1 MILLÓN O MILLONES, MIL O MILES, ETC
'VAMOS AÑADIENDO A LA CADENA SUBCADENAS EMPEZANDO POR LOS MILLONES
If Trim(CadenaMillones) > "" Then
If Trim(CadenaMillones) = "UN" Then
Cadena = CadenaMillones & " MILLÓN"
Else
Cadena = CadenaMillones & " MILLONES"
End If
End If
If Trim(CadenaMiles) > "" Then
Cadena = Cadena & " " & CadenaMiles & " MIL "
End If
Cadena = Cadena & CadenaCientos
'EXCEPCIONES EN LA PARTE ENTERA
If Right(Cadena, 2) = "UN" Then
Cadena = Cadena & "O"
End If
If Left(Trim(Cadena), 6) = "UN MIL" Then
Cadena = "MIL" & Mid(Trim(Cadena), 7)
End If
'AÑADIMOS AHORA LOS DECIMALES AQUÍ
If Trim(CadenaDecimales) > "" Then
Cadena = Cadena & " " & " CON " & CadenaDecimales
End If
'EXCEPCIONES EN LA PARTE DECIMAL
If Right(Cadena, 2) = "UN" Then
Cadena = Cadena & "O"
End If
'EL RESULTADO DE LA FUNCIÓN ES LA CADENA FINAL (SIN ESPACIOS A LOS LADOS)
ConvierteNumeroALetra = Trim(Cadena)
End Function
Function Convierte3Cifras(Texto)
'ESTA FUNCIÓN CONVIERTE UNA CADENA DE TRES CIFRAS EN LETRA ''''''''''''''''''''''''''''''''''''''''''''
'DECLARAMOS LAS VARIABLES QUE EMPLEAREMOS
Dim Centena
Dim Decena
Dim Unidad
Dim txtCentena
Dim txtDecena
Dim txtUnidad
'CADA CIFRA LA METEMOS EN LA CORRESPONDIENTE VARIABLE
Centena = Mid(Texto, 1, 1)
Decena = Mid(Texto, 2, 1)
Unidad = Mid(Texto, 3, 1)
'MIRAMOS LAS CIFRAS DE CENTENAS, DECENAS Y UNIDADES PARA VER QUE CASOS
'TENEMOS. DEBEMOS NOTAR QUE LOS CASOS RAROS SON EN 100 Y DEL 11 AL 19
Select Case Centena
Case "1"
txtCentena = "CIEN"
If Decena & Unidad <> "00" Then
txtCentena = "CIENTO"
End If
Case "2"
txtCentena = "DOSCIENTOS"
Case "3"
txtCentena = "TRESCIENTOS"
Case "4"
txtCentena = "CUATROCIENTOS"
Case "5"
txtCentena = "QUINIENTOS"
Case "6"
txtCentena = "SEISCIENTOS"
Case "7"
txtCentena = "SETECIENTOS"
Case "8"
txtCentena = "OCHOCIENTOS"
Case "9"
txtCentena = "NOVECIENTOS"
End Select
Select Case Decena
Case "1"
txtDecena = "DIEZ"
Select Case Unidad
Case "1"
txtDecena = "ONCE"
Case "2"
txtDecena = "DOCE"
Case "3"
txtDecena = "TRECE"
Case "4"
txtDecena = "CATORCE"
Case "5"
txtDecena = "QUINCE"
Case "6"
txtDecena = "DIECISEIS"
Case "7"
txtDecena = "DIECISIETE"
Case "8"
txtDecena = "DIECIOCHO"
Case "9"
txtDecena = "DIECINUEVE"
End Select
Case "2"
txtDecena = "VEINTE"
If Unidad <> "0" Then
txtDecena = "VEINTI"
End If
Case "3"
txtDecena = "TREINTA"
If Unidad <> "0" Then
txtDecena = "TREINTA Y "
End If
Case "4"
txtDecena = "CUARENTA"
If Unidad <> "0" Then
txtDecena = "CUARENTA Y "
End If
Case "5"
txtDecena = "CINCUENTA"
If Unidad <> "0" Then
txtDecena = "CINCUENTA Y "
End If
Case "6"
txtDecena = "SESENTA"
If Unidad <> "0" Then
txtDecena = "SESENTA Y "
End If
Case "7"
txtDecena = "SETENTA"
If Unidad <> "0" Then
txtDecena = "SETENTA Y "
End If
Case "8"
txtDecena = "OCHENTA"
If Unidad <> "0" Then
txtDecena = "OCHENTA Y "
End If
Case "9"
txtDecena = "NOVENTA"
If Unidad <> "0" Then
txtDecena = "NOVENTA Y "
End If
End Select
If Decena <> "1" Then
Select Case Unidad
Case "1"
txtUnidad = "UN"
Case "2"
txtUnidad = "DOS"
Case "3"
txtUnidad = "TRES"
Case "4"
txtUnidad = "CUATRO"
Case "5"
txtUnidad = "CINCO"
Case "6"
txtUnidad = "SEIS"
Case "7"
txtUnidad = "SIETE"
Case "8"
txtUnidad = "OCHO"
Case "9"
txtUnidad = "NUEVE"
End Select
End If
'CONCATENAMOS TODAS LAS SUBCADENAS PARA OBTENER EL RESULTADO
Convierte3Cifras = txtCentena & " " & txtDecena & txtUnidad
End Function