Una macro, dos macros, tres macros

Cuando en informática hablamos de macros estamos haciendo referencia a una o más instrucciones que se ejecutan de manera conjunta y que pueden tener un nombre común, ni más, ni menos.

Las macros pueden ser complejasEl grado de complejidad a la hora de crear una macro en Access dependerá de la funcionalidad que busquemos (por ejemplo, no es lo mismo mostrar un mensaje, que abrir una tabla, aplicar un filtro y enviar el resultado por correo electrónico) y del método escogido.

No te preocupes porque parezca difícil, ya que para dar una visión general y aclarar conceptos vamos a exponer ejemplos de tres macros sencillas y creadas de formas distintas con las posibilidades que Access nos ofrece y que puedes revisar a través del formulario Autores de la base de datos Tipos de macros.

Formulario Autores con distintos tipos de macros

Macros incrustadas

Podemos decir que las macros incrustadas ya vienen ‘preparadas de fábrica’, listas para que el usuario las utilice de manera directa y fácil. Crear una macro de este tipo es muy sencillo, sólo hace falta estar en la Vista diseño de un formulario y utilizar el control Botón que aparece en la cinta Diseño.

Al definir el tamaño y soltar el ratón se iniciará el Asistente para botones de comando que, a través de diferentes pasos, te ayudará a crear un botón que al ser pulsado ejecutará una acción concreta.

Asistente para botones de comando

Por ejemplo, el situado a la izquierda en Autores es un botón de este tipo cuya utilidad es cerrar el formulario activo a través de la acción que puedes ver en la figura.

Generador de macros

Es opción da la posibilidad al usuario de definir macros mediante la elección de distintas acciones que se ejecutarán en el orden establecido. Además, se pueden crear y ejecutar de manera independiente, desde la cinta Crear, o bien hacerlo asociadas a un evento.

Generador de macros

En el panel de explotación de Tipos de macros, puedes ver la macro Vista previa que muestra el objeto actual en modo vista preliminar para ajustar su impresión o formato final y que en el formulario Autores está asociada al evento Al hacer clic del botón central.

Macro asociada a evento

Macros programadas

En último lugar, tenemos las macros creadas con el lenguaje de programación Visual Basic para Aplicaciones y que dotan a Access de potencia para hacer verdaderas aplicaciones independientes que controlen todas las necesidades reales del usuario.

En esta ocasión, sólo hemos utilizado una pequeña sentencia cuyo efecto es mostrar un mensaje en pantalla. Para hacerlo, insertamos un botón, cancelamos el asistente y en el evento Al hacer clic pulsamos el botón de los tres puntos para acceder al Generador de código.

Macro programada con VBA

Prueba a escribir la instrucción MsgBox entre las líneas Sub que aparecen automáticamente y comprueba el funcionamiento del botón en la Vista formulario.

Conclusión

Si eres un usuario novel puedes aportar un plus a tus diseños mediante las macros incrustadas.

Si tienes cierta soltura y no te da miedo probar, utiliza el Generador de macros para encadenar acciones que realices con frecuencia de manera que ahora se ejecuten de manera automática.

Si tienes conocimientos de programación ahonda en todas las posibilidades que ofrece el modelo de objetos de Access y crea macros programadas que den solución a tus problemas.

 

 

Crea tus propias funciones en Excel

Funciones para ExcelAunque Excel cuenta con un impresionante catálogo de funciones agrupadas en distintas categorías, el usuario también puede crear funciones propias, personalizadas y adaptadas a sus necesidades.

Tipos de datos

Cada vez que empleas una función en Excel, obtendrás un determinado resultado, que puede ser un texto, un número entero, con decimales… y, en la mayoría de los casos, será necesario pasar a Excel una serie de argumentos para obtener un determinado dato.

Pues bien, si vamos a crear nuestras funciones, en primer lugar será necesario conocer qué tipos de datos/variables se admiten:

Tipo Rango
Byte 0 a 255
Integer (entero) -32 768 a 32 767
Long (entero largo) -2 147 483 648 a 2 147 483 647
Single (simple de coma flotante) -3,402823E38 a 1,401298E-45 (negativos)1,401298E-45 a 3,402823E38 (positivos)
Double (doble de coma flotante) -1,79769313486231E308 a 4,94065645841247E-324 (negativos)4,94065645841247E-324 a 1,79769313486231E308 (positivos)
Currency (moneda) -922 337 203 685 477,5808 a 922 337 203 685 477,5807
Decimal +/- 79 228 162 514 264 337 593 543 950 335 sin separador decimal;+/- 7,9228162514264337593543950335 con 28 cifras a la derecha del separador decimal
Boolean Verdadero (-1) o Falso (0)
Date Se utiliza para almacenar fechas y horas. La parte entera es el día y la decimal la hora. Para asignar fechas se usa #
String Para cadenas de caracteres puede ser de longitud variable o de longitud fija
Variant Puede contener todo tipo de datos, además de los valores especiales Empty, Error y Null
Object Se emplea para crear variables que contengan objetos

 

FUNCTION

Las funciones personalizadas se crean en el entorno de Visual Basic para Aplicaciones (VBA) bajo la forma de procedimientos Function. En consecuencia, lo primero será acceder a dicho entorno, ya sea pulsando el icono Visual Basic de la cinta Programador o mediante la combinación de teclas Alt+F11.

El código necesario para crear la función debe escribirse en un módulo, así que entramos en el menú Insertar y hacemos clic sobre Módulo, para que Excel inserte y active el objeto correspondiente.

Entorno VBA para Excel

Si lo has hecho correctamente, tu pantalla debe asimilarse a la imagen, en particular, a la parte superior izquierda, y será en la parte de la derecha dónde escribamos el código para crear nuestra función.

Palabras clave

A la hora de programar en el entorno VBA es necesario conocer algunos términos o palabras clave que utilizaremos para crear el código.

Function...End Function

Indica el principio y el final del código para crear la función

As [tipo de dato/variable]

Seguida de uno de los tipos expuestos en la tabla superior se utiliza para indicar tanto especificar el tipo de argumento que pasaremos a la función como para definir el tipo de resultado que devolverá la función

Ejemplo de función personalizada

Si trabajas con Excel sabrás que existe la función SUMA pero que no hay ninguna disponible para restar, así que expondremos un ejemplo sencillo: vamos a crear la función RESTA que restará DOS NÚMEROS ENTEROS.

Nos ponemos manos a la obra y en la zona derecha de la pantalla escribimos el siguiente código:

Function resta(numero1 As Integer, numero2 As Integer) As Integer
resta = numero1 - numero2
End Function

Recomendamos escribir todo el código en minúsculas, ya que si Excel reconoce a priori como bueno nuestro código, al ir cambiando de línea, irá poniendo en azul y en mayúsculas los términos clave.

Analizando el código

En la primera línea se pueden observar varios datos interesantes; por un lado RESTA(…) AS INTEGER es decir, que el resultado de la función será un número entero; por otro (NUMERO1 AS INTEGER,NUMERO2 AS INTEGER), indicando que los dos números que vamos a restar deben ser enteros.

A continuación, la expresión RESTA = NUMERO1 – NUMERO2  es el cálculo que se aplicará de manera interna al llamar a la función desde la hoja de cálculo.

Cómo ves, el código es muy sencillo aunque, lógicamente, se puede mejorar para incluir por ejemplo controles de error por si pasáramos como datos textos, fechas o números con decimales; aunque será algo que veremos en artículos futuros.

Utilizando la función

Para emplearla, ve a la hoja de cálculo, introduce dos números en celdas diferentes, por ejemplo A1 y A2 y en A3 escribe =RESTA(A1;A2). El resultado debe ser 19 y si lo haces al revés =RESTA(A2;A1) también funcionará.

Si no eres de escribir función porque te gusta más el asistente, entonces entra en la categoría Definida por el usuario y opera de la manera habitual.

Función definida por el usuario

Resumen

Aunque no sepas programar en Visual Basic para Aplicaciones, con unos conocimientos básicos y las ideas claras podrás crear tus propias funciones para Excel.