You are on page 1of 11

Function PesosMN(tyCantidad As Currency) As String Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte, lnSegundoDigito As Byte,

lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte, lnBloqueCero Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como Option Explicit tyCantidad = Round(tyCantidad, 2) lyCantidad = Int(tyCantidad) lyCentavos = (tyCantidad - lyCantidad) * 100 laUnidades = Array("Un", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Diecisis", "Diecisiete", "Dieciocho", "Diecinueve", "Veinte", "Veintiuno", "Veintids", "Veintitrs", "Veinticuatro", "Veinticinco", "Veintisis", "Veintisiete", "Veintiocho", "Veintinueve") laDecenas = Array("Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa") laCentenas = Array("Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos") lnNumeroBloques = 1 Do lnPrimerDigito = 0 lnSegundoDigito = 0 lnTercerDigito = 0 lcBloque = "" lnBloqueCero = 0 For I = 1 To 3 lnDigito = lyCantidad Mod 10 If lnDigito <> 0 Then Select Case I Case 1

lcBloque = " " & laUnidades(lnDigito - 1) lnPrimerDigito = lnDigito Case 2 If lnDigito <= 2 Then lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1) Else lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque End If lnSegundoDigito = lnDigito Case 3 lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN", laCentenas(lnDigito - 1)) & lcBloque lnTercerDigito = lnDigito End Select Else lnBloqueCero = lnBloqueCero + 1 End If lyCantidad = Int(lyCantidad / 10) If lyCantidad = 0 Then Exit For End If Next I Select Case lnNumeroBloques Case 1 PesosMN = lcBloque Case 2

PesosMN = lcBloque & IIf(lnBloqueCero = 3, Null, " Mil") & PesosMN Case 3 PesosMN = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, " Millon", " MIllones") & PesosMN End Select lnNumeroBloques = lnNumeroBloques + 1 Loop Until lyCantidad = 0 PesosMN = "" & PesosMN & IIf(tyCantidad > 1, " Pesos ", " Peso ") & "M/Cte" End Function

Convertir nmeros en palabras con Excel 2010 (macro VBA)


Escrito por M. Vizcarra el 23/12/2011. Clasificado como Excel

Comenzar por explicar las condiciones sujetas al procedimiento de convertir nmeros o cifras numricas en palabras (por ejemplo: 123, en palabras sera ciento veintitres): 1. Tener activas las macros en Excel 2010, de lo contrario no funcionar. 2. La capacidad de cifras a leer es desde 0 hasta 999999999 Para poder utilizar este macro a travs de una funcin, ingresa al editor de Visual Basic (VBA) presionando alt + F11, luego inserta un nuevo mdulo como se ve en la imagen:

Ya dentro del mdulo debes copiar el siguiente cdigo:


'----------------------------------------------------------------Function Num_texto(Numero) Dim Texto Dim Millones Dim Miles Dim Cientos Dim Decimales Dim Cadena Dim CadMillones Dim CadMiles Dim CadCientos Texto = Numero Texto = FormatNumber(Texto, 2) Texto = Right(Space(14) & Texto, 14)

Millones = Mid(Texto, 1, 3) Miles = Mid(Texto, 5, 3) Cientos = Mid(Texto, 9, 3) Decimales = Mid(Texto, 13, 2) CadMillones = ConvierteCifra(Millones, 1) CadMiles = ConvierteCifra(Miles, 1) CadCientos = ConvierteCifra(Cientos, 0) If Trim(CadMillones) > "" Then If Trim(CadMillones) = "UN" Then Cadena = CadMillones & " MILLON" Else Cadena = CadMillones & " MILLONES" End If End If If Trim(CadMiles) > "" Then Cadena = Cadena & " " & CadMiles & " MIL" End If If Trim(CadMiles & CadCientos) = "UN" Then Cadena = Cadena & "UNO CON " & Decimales & "/100" Else If Miles & Cientos = "000000" Then Cadena = Cadena & " " & Trim(CadCientos) & " " & Decimales & "/100" Else Cadena = Cadena & " " & Trim(CadCientos) & " " & Decimales & "/100" End If End If

Num_texto = Trim(Cadena) End Function '----------------------------------------------------------------Function ConvierteCifra(Texto, SW) Dim Centena Dim Decena Dim Unidad Dim txtCentena Dim txtDecena Dim txtUnidad Centena = Mid(Texto, 1, 1) Decena = Mid(Texto, 2, 1) Unidad = Mid(Texto, 3, 1) 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" If SW Then txtUnidad = "UN" Else txtUnidad = "UNO" End If 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 ConvierteCifra = txtCentena & " " & txtDecena & txtUnidad End Function

Y por ltimo para usar esta funcin solamente debes colocar la funcin =Num_Texto([NUMERO]), donde [NUMERO] es la celda que contiene la cifra en formato numrico o el nmero en s, por ejemplo
=Num_Texto(14) >> el resultado sera: CATORCE =Num_Texto(A1) >> el resultado sera: CATORCE, si A1 contiene el nmero 14

You might also like