martes, 25 de octubre de 2011

Crear Funciones con Macros (VBA) en Excel

A través de este artículo podremos conocer con mayor detalle la utilidad de la herramienta Visual Basic Application (VBA) al momento que deseamos CREAR FUNCIONES. Al terminar de leer se estará en condiciones de crear sus propias funciones VBA en Microsoft Excel, de tal manera de simplificar las operaciones que se deseen realizar.

¿Qué es?

Crear funciones VBA, se logra a través de un lenguaje de programación que se encuentra integrado en Microsoft Excel, y se utiliza para automatizar tareas que sean cotidianas, es decir, tareas que se realicen repetidamente y que a su vez pueden ser personalizables. Por lo anterior, es que Visual Basic se torna como una herramienta sumamente útil para crear funciones propias, debido a que disminuye el tiempo al escribir varias veces un mismo procedimiento.

¿Cómo funciona?

Si estamos trabajando con cálculos complejos escribiendo extensas fórmulas repetidas veces, y el cálculo que se desea hacer no está incorporado en las funciones predeterminadas de Excel, lo que debo hacer es personalizar una función a través de VBA. Así podremos ser capaces de crear una función que se ajuste a las necesidades específicas del usuario.

Ésta herramienta funciona abriendo un nuevo módulo en la aplicación Visual Basic incorporada en Excel y luego escribiendo el código necesario para hacer que la función pueda ser ejecutada y obtener los resultados que se esperan entregue ésta.
Para armar una función VBA es necesario manejar lenguaje de programación, este no es complicado, es básico, y la herramienta Ayuda de Office nos facilitará el crear el código requerido para realizar la instrucción.

Una función en VBA básica posee la siguiente sintaxis:





X = Parámetro que toma la función ( variable que almacena la celda que se hace referencia Excel).

Más detalles después del salto.



Procedimiento para Crear una Función VBA

Para hacer uso de ésta herramienta debemos ingresar a ella de la siguiente manera:

1° Abrir una hoja de cálculo y guardarla como Excel que contenga macros.
2° Cerciorase que se encuentra activada la pestaña “Programador” de la barra de herramientas. (Si no se encuentra activada ver explicación en Presentación de PowerPoint en link adjunto)
3° En la pestaña Programador ir a Editor de Visual Basic.





También es posible ingresar al Editor de Visual Basic presionando ALT+F11.
4° Haciendo clic en Visual Basic se nos abrirá el Microsoft Visual Basic para Aplicaciones, ir a Insertar y luego a Módulo.



5° Al seleccionar un módulo, se nos abrirá una nueva ventana en la cual podremos introducir todo el código para armar la función deseada.





6° Luego de haber escrito el código necesario, vuelvo al Excel.





7° Luego en la planilla, teniendo una columna con valores asignados, podremos llamar a la función creada situándonos en una celda en blanco y luego poniendo:

=Nombredelafuncioncreada(...)

Lo anterior me entregará el valor esperado de la función.

NOTA: Cabe destacar, que cuando se trabaja a través de Excel para crear funciones VBA lo compilado quedará incorporado en la misma hoja de cálculo en que fue creado, esto nos indica que se ha convertido en una macro.

Ejemplo

Para ejemplificar la creación de funciones VBA presentaremos a continuación una aplicación que desarrollamos junto con su respectiva explicación.

Tomaremos como base de datos la lista de los diputados en Chile. La función que desarrollamos nos permitirá obtener del nombre del diputado seleccionado junto con los datos de su: región, partido y distrito al cual pertenece.





Para desarrollar la función debemos comenzar a crearla ingresando a un nuevo módulo en VBA. A continuación escribiremos el código de la función que deseamos obtener. Para nuestro ejemplo el nombre de la función es “diputados”, la cual como nombramos anteriormente queremos que nos entregue los datos de la base correspondientes al diputado escogido.

Seleccionamos dos variables, el nombre del diputado que es valor y los rangos de los datos de las columnas correspondientes a la información del diputado seleccionado.

En caso de que la casilla donde colocaremos el nombre del diputado se encuentre vacía, los valores que debería devolver la función dirán que se debe introducir el nombre del diputado.
Los datos vendrán de la hoja “Diputado” que se encuentran en los rangos de a2 a d121.



Luego de terminada la función volvemos al Excel y crearemos un marco en una hoja nueva llamada “inserte” donde habrá una celda para colocar el nombre del diputado.



En el caso anterior como no hemos ingresado un nombre nos aparece en las celdas contiguas “introduzca el nombre”. Lo cual cambia al ingresar el nombre de cualquier diputado.



Link ejemplo: http://www.youtube.com/watch?v=_6j_bQwrK24

Característica Principal

Las funciones VBA tienen como característica principal que nos entregan un valor, debido pues nos facilitan el hacer cálculos más complejos.

Crear funciones VBA para el Mundo Profesional

El mapa estratégico, es sin duda el elemento más importante de un BSC, por desgracia en muchas implantaciones nos olvidamos de este elemento fundamental.

El mapa estratégico debe describir, en forma clara y visual, la estrategia de la organización. Debe permitir comprender, de un solo vistazo, la estrategia de la empresa, incluidas las relaciones causa-efecto y las dependencias entre los objetivos, y lo más importante el estado de cada uno de los objetivos de forma explícita y actualizada. Para esta última característica Excel no proporciona una herramienta para que el formato de un objeto cambie de acuerdo de distintos parámetros, es decir una forma de formato condicional pero orientado a objetos.

Para este problema la creación de una función VBA presenta una gran solución ya que a través de la formulación de una simple función se puede lograr que el color de un objeto cambie de acuerdo a los datos de un objetivo específico de un Mapa estratégico.

En este caso se puede crear un función, en este caso “Indica_color1”, la cual necesita una celda y una elipse para funcionar. A continuación se pone las condiciones que determinarán el color a través de “If”, es decir si la celda es igual a “1” entonces rellenar con rojo, si es “2” pintar amarilla y si es “3” pintar verde. A continuación se muestra el código.




Posteriormente creamos una tabla a la cual se aplicará la función, en la primera columna se pone la elipse que refleja los datos que necesitamos, después en la siguiente columna ponemos el valor del objetivo estratégico, que representa el estado de consecución de los objetivos, es decir si es negativo en rojo, si es cercano a cero hay que estar alerta y si es mayor a cero es positivo por lo tanto se pone el color verde, de acuerdo a esos datos se define si la celda1 es 1, 2 o 3 que se define en la formula descrita en la imagen anterior (se puede hacer con una función “SI”). Y en la siguiente columna ponemos la formula que se creó en un principio que tendrá como argumentos la celda que define el color de la elipse y la elipse que se debe editar.




Finalmente se obtendrá las elipses del mapa estratégico de distintos colores dependiendo de los resultados del objetivo estratégico que representa el objeto, de esta forma si los resultados cambian entonces los estados de los objetivos estratégicos también cambian y por ende su color.



Links a las Fuentes

Autores
Maricel Alarcón
Carlos Cifuentes
Mario Vargas

6 comentarios:

  1. Creo que todos lo ocuparán en algún momento, con esta función se puede hacer un BSC dinámico que es una de las característica que debe tener.

    ResponderEliminar
  2. Muy buena la aplicación para los negocios. Es como algo parecido a usar "formato condicional" (la desventaja es que se da sólo en celdas y no en ninguna figura), pero más complejo. Muy útil el ejemplo.

    ResponderEliminar
  3. Estan muy bien explicadas las ventajas que entrega. Y sabiendo usarla se puede ahorrar mucho tiempo en tareas que sean con funciones complicadas y muy repetidas. El ejemplo es muy simple pero refleja muy bien los beneficios que trae.

    ResponderEliminar
  4. Muy bueno el ejemplo de aplicación a los negocios, con una función super simple se puede crear condiciones de formato para figuras.
    Una pregunta: ¿es posible también cambiar la forma?

    ResponderEliminar
  5. Gracias!
    Me hacía falta saber esto, desde que un compañero de ayudantía lo hizo cuando estaba en 2do que tenía la duda :)

    ResponderEliminar