Está en la página 1de 3

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", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", "VEINTIUN", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO", "VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE") laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA") laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS") 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 = "SON: (" & PesosMN & IIf(tyCantidad > 1, " PESOS ", " PESO ") & Format(Str(lyCentavos), "00") & "/100 M.N.)" End Function

Bien, ahora que ya tenemos el cdigo vamos a insertarlo en nuestra hoja de trabajo de Microsoft Excel. Recomendable trabajar en un libro nuevo. Hacemos clic en Herramientas->Macros->Editor de Visual Basic, o simplemente presionando Alt+F11

Es importante que cierres todos los libros que tengas abierto y dejes abierto solo el libro en el que estas trabajando ya que podra dificultarte encontrar tu libro en el explorador de proyectos (lado izquierdo de tu pantalla, si no lo ves presiona Ctrl+R) Una vez abierto el editor de Visual Basic nos vamos a Insertar->Modulo

En la ventana que se abre pegamos el codigo de la macro

Listo, ya tenemos nuestro macro listo para trabajar, cerramos el editor de Visual Basic, lo puedes hacer con Alt+Q y regresamos a Microsoft Excel Vamos a probarlo, en la celda A1 ponemos un importe, yo pondr 1500.21, abajo, en la celda A2 ponemos =PesosMN(A1)

Bien, si pudiste hacer el ejercio hasta aqu, ya puedes ponerlo en todos tus libros de trabajo, buena suerte.

También podría gustarte