En este ejemplo se usa la función de hoja de cálculo PAGO para calcular el pago mensual de un préstamo hipotecario.
1ra Solución:
1.- En la Hoja1 de un nuevo libro escribir los siguientes datos que se muestran en la imagen adjunta. 2.- Luego, en la celda B7 escribir la
función PAGO siguiente:
=PAGO(B3/1200,B4,-B5)
3.- Guarde el archivo con el nombre Pago de Hipoteca.
2da Solución:
Ahora, el mismo caso anterior se va ha resolver pero utilizando íntegramente un procedimiento Sub. Es decir no se necesitarán en absoluto datos de ninguna celda. 1.- Ingresar al Editor de Visual Basic con Alt+F11 y luego inserte una hoja de módulo
con el menú Insertar/Modulo.
2.- En la hoja de módulo escriba las siguientes instrucciones:
Sub PagoMensual()
Interes = Val(InputBox("Ingrese el Interés:")) Periodos = Val(InputBox("Ingrese los Periodos:")) Prestamo = Val(InputBox("Ingrese el Préstamo:"))
Pago = Application.WorksheetFunction.Pmt(Interes/1200, _ Periodos,-Prestamo)
MsgBox ("El Pago mensual es de: " & Format(Pago, "Currency")) End Sub
Como la función Inputbox devuelve datos tipo texto al escribir el Interés, los Períodos o el Préstamo, entonces, se le antepone la función Val para convertir esos datos en números, y así poder operarlos matemáticamente con la función Pago (que en ingles su equivalente es Pmt)
3.- Con Autoformas/Formas básicas/Bisel dibuje un botón en la hoja de calculo y asígnele la macro PagoMensual.
Interés
Número de pagos
Monto del préstamo
Elaborado por: Daniel Zegarra Zavaleta Pag. 58 Cuando la macro se ejecute mostrará las siguientes ventanas en la pantalla, en las cuales en cada caso se deberá escribir los datos que se solicitan y hacer clic en el botón Aceptar:
4.- Guarde nuevamente el archivo con Ctrl+G.
En conclusión, como puede verse, Excel puede resolver el mismo problema de dos formas distintas:
En el primer caso, calcula el pago mensual de la hipoteca escribiendo y calculando los datos en el interior de las celdas de la hoja de cálculo.
En el segundo caso, realiza el mismo calculo pero ingresando y mostrando los resultados íntegramente en el ambiente de Visual Basic, sin utilizar en absoluto las celdas de la hoja de cálculo.
Habrán otros casos como hemos visto ya, en los cuales para resolver los problemas es necesario utilizar ambos ambientes en forma combinada, es decir; usar los datos y cálculos existentes en las celdas, y también los datos y cálculos provenientes de las instrucciones de Visual Basic.
3ra Solución:
Una tercera forma de ingresar los datos para el calculo del pago de la hipoteca es haciendo uso del Método Inputbox, en vez de la Función Inputbox.
1.- Ingresar al Editor de Visual Basic con Alt+F11 y en la hoja de módulo escriba las siguientes instrucciones:
Elaborado por: Daniel Zegarra Zavaleta Pag. 59
Sub OtroPago()
Interes = Application.InputBox("Seleccione el Interés:") Periodos = Application.InputBox("Seleccione los Periodos:") Prestamo = Application.InputBox("Seleccione el Préstamo:") Pago = Application.WorksheetFunction.Pmt(Interes / 1200, _ Periodos, -Prestamo)
MsgBox ("El Pago mensual es de: " & Format(Pago, "Currency")) End Sub
En este caso el método Interés = Application.Inputbox trata al dato que uno escribe, directamente como del tipo numérico, ya no como texto. Por esta razón ya no es necesario usar la función Val.
2.- Luego asigne esta macro al mismo botón de autoformas del caso anterior.
Cuando la macro se ejecute y aparezcan las ventanas para introducir datos, se podrán escribir los datos o sino también se podrá seleccionar con el mouse las celdas que contienen los datos que se solicitan y hacer luego clic en el botón Aceptar:
Elaborado por: Daniel Zegarra Zavaleta Pag. 60
23.
Funciones propias de Visual Basic
a. Lista breve de las funciones más comunesVal Convierte los números contenidos en una cadena como un valor numérico del tipo adecuado.
Por ejemplo, Val("15 años"), da como respuesta el número: 15
Str Convierte en un tipo texto (String) la representación de cadena de un número. Por ejemplo, Str(15) & "años", da como respuesta el texto: 15 años
Left Extrae un número especificado de caracteres del lado izquierdo de una cadena. Por ejemplo, Left("Limatambo",4), da como respuesta el texto: Lima.
Right Extrae un número especificado de caracteres del lado derecho de una cadena. Por ejemplo, Rigth("Limatambo",5), da como respuesta el texto: tambo.
Mid Extrae un numero especificado de caracteres de la parte interior de una cadena. Por ejemplo, Mid("Limatambo",3,4), da como respuesta el texto: mata.
Int, Fix Las funciones Int y Fix eliminan la fracción de un número y devuelven el valor entero resultante. La diferencia entre Int y Fix es que si el número es negativo, Int devuelve el primer entero negativo menor o igual a número, mientras que Fix devuelve el primer entero negativo mayor o igual a número.
Por ejemplo, Int(-8.4) da como respuesta: -9, Y en cambio Fix(-8.4) da como respuesta: -8.
Abs Devuelve el valor absoluto de un número o expresión de cálculo Por ejemplo, Abs(3-7) da como respuesta: 4
Sgn Devuelve el número 1,0,ó -1 que indica el signo de un número. Por ejemplo, Sgn(34) da como respuesta 1
Sgn(0) da como respuesta 0 Sgn(-23) da como respuesta -1
Len Da como resultado la cantidad de caracteres que tiene una cadena de texto. Por ejemplo, Len("Limatambo") da como respuesta el número: 9
Elaborado por: Daniel Zegarra Zavaleta Pag. 61 Por ejemplo, Round(3.1415927,4) da como respuesta el número: 3.1416
Date Obtiene la fecha actual del sistema.
Por ejemplo, Date da como respuesta: 11/05/2005
Timer Obtiene el número de segundos transcurridos desde la medianoche.
Hour Obtiene un número entero entre 0 y 23, inclusive, que representa la hora del argumento de la función.
Por ejemplo, Hour(3:15:27) da como respuesta: 3
Now Obtiene un número que especifica la fecha y hora actuales de acuerdo con la configuración de la fecha y la hora del sistema de su equipo.
Por ejemplo, Now da como respuesta: 11/05/2005 3:15:27
Day Obtiene un número entero entre 1 y 31, inclusive, que representa el día del mes. Por ejemplo, Day(Now) da como respuesta: 5
Minute Obtiene un número entero entre 0 y 59, inclusive, que representa el minuto de la hora actual del sistema.
Por ejemplo, Minute(Now) da como respuesta: 15
Second Obtiene número entero entre 0 y 59, inclusive, que representa los segundos de la hora actual del sistema.
Por ejemplo, Second(Now) da como respuesta: 27
Year Obtiene un número entero que representa el año actual del sistema. Por ejemplo, Year(Now) da como respuesta: 2005
Format formatea un dato de acuerdo a las instrucciones contenidas en una expresión de formato.
Por ejemplo:
Pago = 3562.4
Z = Format(Pago, "Currency") Y = Format(Pago, "#,##0.00")
Entonces Z será igual a: S/. 3,562.40 En cambio Y será igual a: 3,562.40
Elaborado por: Daniel Zegarra Zavaleta Pag. 62