Вы находитесь на странице: 1из 70

INTRODUCCIÓN A LAS

MACROS

Publicado por Moisés el 4 de octubre, 2011.


https://exceltotal.com/introduccion-a-las-macros/
Introducción a las macros
Las macros de Excel nos permiten automatizar tareas que realizamos
cotidianamente de manera que podamos ser más eficientes en
nuestro trabajo. Una macro no es más que una serie de comandos o
instrucciones que permanecen almacenados dentro de Excel y que
podemos ejecutar cuando sea necesario y cuantas veces lo
deseemos.

Aunque las macros son un tema avanzado de Excel puedes consultar


los siguientes artículos para comenzar a familiarizarte con este tema.

Una vez que hayas dado los primeros pasos en el mundo de


las macros y la programación en VBA descubrirás que Excel se
convierte en una herramienta muy poderosa para solucionar cualquier
problema que afrontes en el manejo de información.

Publicado por Moisés el 4 de octubre, 2011.


Contenido
INTRODUCCIÓN A LAS MACROS......................................................................1
Introducción a las macros................................................................................... 2
¿Qué es una macro de Excel?............................................................................ 3
Un lenguaje de programación..........................................................................3
Para qué sirve una macro en Excel......................................................................4
Automatización de tareas................................................................................ 4
¿Cómo se ve una macro en Excel?...................................................................5
Creación de una macro................................................................................... 5
Mostrar la ficha Programador.............................................................................. 6
Mostrar la ficha Programador en Excel 2010......................................................6
Grupos de la ficha Programador.......................................................................7
La grabadora de macros..................................................................................... 8
La grabadora de macros en Excel 2010.............................................................8
Crear una macro............................................................................................. 10
El código de la Grabadora de macros.................................................................12
Establecer seguridad de macros........................................................................15
PROGRAMACIÓN........................................................................................... 17
Programando en VBA...................................................................................... 17
Principios fundamentales............................................................................... 17
Propiedades y Métodos................................................................................. 17
Cadenas de texto en VBA................................................................................. 18
Unir cadenas de texto................................................................................... 19
La función Left............................................................................................. 19
La función Right........................................................................................... 20
La función Len............................................................................................. 21
La función InStr............................................................................................ 21
La función Mid............................................................................................. 22
La declaración If-Then en VBA..........................................................................23
Ejemplo de la declaración If-Then...................................................................24
La declaración If-Then-Else........................................................................... 24
Acceder celdas con VBA.................................................................................. 26
Seleccionar una celda................................................................................... 26
Seleccionar un rango.................................................................................... 26
Establecer el valor de una celda.....................................................................26
Ventaja del objeto Cells................................................................................. 27
El bucle For-Next en VBA................................................................................. 27
La instrucción For-Next................................................................................. 27
Ejemplo de un bucle For-Next........................................................................28
Operadores lógicos en VBA.............................................................................. 29
El operador lógico And.................................................................................. 29
El operador lógico Or.................................................................................... 31
Eventos en VBA.............................................................................................. 32
Ejemplos de eventos en VBA.........................................................................32
Un ejemplo de eventos en VBA......................................................................33
Arreglos en VBA.............................................................................................. 35
Crear un arreglo en VBA............................................................................... 35
Acceder un elemento del arreglo....................................................................36
3 comentarios en “Arreglos en VBA”...............................................................36
Fecha y hora en VBA....................................................................................... 36
Obtener la fecha y hora actual........................................................................37
Obtener el año, mes y día.............................................................................. 37
Obtener la hora, minuto y segundo.................................................................38
Convertir una cadena de texto en fecha...........................................................38
Sumar días a una fecha................................................................................ 39
Funciones VBA.............................................................................................. 40
Creando una función VBA................................................................................. 45
La palabra clave Function.............................................................................. 46
Parámetros de una función VBA....................................................................46
Valor de retorno........................................................................................... 46
Cuerpo de la función VBA.............................................................................. 46
Retornando el valor...................................................................................... 47
Probando la función VBA............................................................................... 47
CONTROLES.................................................................................................. 47
Controles de formulario en Excel.......................................................................47
¿Cómo insertar un control de formulario en Excel?...........................................48
Los diferentes controles de formulario.............................................................49
Controles de formulario no disponibles en Excel 2010.......................................49
Controles ActiveX en Excel............................................................................... 50
Controles ActiveX y controles de formulario......................................................50
Propiedades de los controles ActiveX..............................................................51
Controles ActiveX con subrutinas VBA............................................................52
Otra ventaja de los controles ActiveX en Excel.................................................53
Cuadro de texto en Excel.................................................................................. 54
Insertar un cuadro de texto en Excel...............................................................54
Modificar valor del cuadro de texto..................................................................55
Leer valor del cuadro de texto........................................................................55
Cuadro de lista en VBA.................................................................................... 56
Dibujar un cuadro de lista.............................................................................. 56
Especificar los elementos del cuadro de lista....................................................56
Elementos del cuadro de lista por código.........................................................57
Asociar una celda al cuadro de lista................................................................58
Casilla de verificación en VBA...........................................................................59
El control ActiveX casilla de verificación...........................................................59
Propiedades de una casilla de verificación.......................................................60
Valor de una casilla de verificación..................................................................61
Botón de opción en VBA................................................................................ 62
El botón de opción en Excel........................................................................62
La propiedad Caption................................................................................. 63
El botón de opción en VBA.........................................................................63
Formularios en VBA......................................................................................... 64
Crear un formulario en Excel..........................................................................64
Agregar controles al formulario.......................................................................65
Código para el botón Cancelar.......................................................................66
Código para el botón Aceptar.........................................................................66
Botón para abrir formulario............................................................................ 67
Probar el formulario...................................................................................... 67
¿Qué es una macro de
Excel?
Si utilizas Excel frecuentemente es posible que en alguna ocasión te
hayas encontrado ejecutando una misma serie de acciones una y otra
vez. Esas acciones que haces repetidas veces se podrían automatizar
con unamacro.

Una macro es un conjunto de comandos que se almacena en un lugar


especial de Excel de manera que están siempre disponibles cuando
los necesites ejecutar.

Por ejemplo, si todas las mañanas creas un reporte de ventas y en


ese reporte siempre das el mismo formato a los textos, se podría crear
una macro para que lo haga automáticamente por ti. Las macros se
utilizan principalmente para eliminar la necesidad de repetir los pasos
de aquellas tareas que realizas una y otra vez.

Un lenguaje de programación

Las macros se escriben en un lenguaje de computadora especial que


es conocido como Visual Basic for Applications (VBA). Este lenguaje
permite acceder a prácticamente todas las funcionalidades de Excel y
con ello también ampliar la funcionalidad del programa.

Pero no te preocupes si no eres un programador de computadoras,


Excel provee de una herramienta especial que permite crear
una macro sin necesidad de conocer los detalles del lenguaje de
programación.

Aunque si aceptas el desafío y te introduces en el mundo de la


programación VBA pronto te convertirás en un Ninja de Excel. Verás
que crear una macro en Excel no es tan complicado y será una
manera fácil y rápida de eliminar esas tareas repetitivas que todos los
días te quitan minutos preciados de tu tiempo.

Para qué sirve una macro


en Excel
¿Para qué sirve una macro en Excel? Una macro nos ayuda a
automatizar aquellas tareas que hacemos repetidamente. Una macro
es una serie de instrucciones que son guardadas dentro de un archivo
de Excel para poder ser ejecutadas cuando lo necesitemos.

Automatización de tareas

Seguramente estás familiarizado con procesos de automatización en


el ámbito industrial. Un ejemplo muy claro son las plantas
ensambladoras de automóviles donde existen robots que han
sustituido tareas que antes eran hechas por humanos. La
automatización trajo beneficios como mayor eficiencia y productividad
de las plantas y un mejor aprovechamiento del tiempo del personal al
reducir la cantidad de tareas repetitivas que realizaban.

De la misma manera las macros nos ayudan a eliminar esas tareas


repetitivas de nuestro trabajo cotidiano al permitirnos utilizar mejor
nuestro tiempo en el análisis de los datos y en la toma de decisiones.

¿Cómo se ve una macro en Excel?

Las macros son escritas en un lenguaje de computadora conocido


como VBA por sus siglas en inglés (Visual Basic for Applications).
Como cualquier otro lenguaje de computadora debemos aprender a
utilizar los comandos que nos ayudarán a indicar a Excel lo que
deseamos hacer con nuestros datos.

Aprender el lenguaje VBA no es nada complicado y se puede lograr


fácilmente. Lo que toma un poco más de tiempo es pulir nuestras
habilidades de programación. Lo que quiero decir con esto es que
para ser un buen programador de macros debes dedicar tiempo en
resolver múltiples problemas en donde puedas llevar al límite el
lenguaje VBA.

Creación de una macro

Las macros se crean con el Editor de Visual Basic el cual nos permitirá
introducir el código con las instrucciones que serán ejecutadas por la
macro.
Existe otro método que es utilizar la Grabadora de macros la cual irá
grabando todas las acciones que realicemos en Excel hasta que
detengamos la grabación. Una vez grabada la macro podremos
“reproducir” de nuevo las acciones con tan solo un clic.

Ahora que ya sabes para qué sirve una macro en Excel puedes dar
los primeros pasos en este camino utilizando el tutorial Introducción a
las macros.

Mostrar la ficha
Programador
Si quieres escribir una nueva macro o ejecutar una macro previamente
creada, entonces debes habilitar la ficha Programador dentro de la
cinta de opciones. Para mostrar esta ficha sigue los siguientes pasos.

Mostrar la ficha Programador en Excel 2010

Haz clic en la ficha Archivo y elige la sección Opciones. Se mostrará el


cuadro de diálogo Opciones de Exceldonde deberás seleccionar la
opción Personalizar cinta de opciones.
En el panel de la derecha deberás asegurarte de seleccionar la
ficha Programador.

Acepta los cambios y la ficha se mostrará en la cinta de opciones.

Grupos de la ficha Programador


El grupo Código tienes los comandos necesarios para iniciar el Editor
de Visual Basic donde se puede escribir directamente código VBA.
También nos permitirá ver la lista de macros disponibles para poder
ejecutarlas o eliminarlas. Y no podríamos olvidar mencionar que en
este grupo se encuentra el comando Grabar macro el cual nos
permite crear una macro sin necesidad de saber sobre programación
en VBA.

El grupo Complementos nos permite administrar y habilitar


complementos como el Solver.

El grupo Controles incluye funcionalidad para agregar controles


especiales a las hojas de Excel como los controles de formulario que
son botones, casillas de verificación, botones de opción entre otros
más que serán de gran utilidad para ampliar la funcionalidad de Excel.

El grupo XML permite importar datos de un archivo XML así como


opciones útiles para codificar archivos XML. Finalmente el
grupo Modificar solamente contiene el comando Panel de
documentos.

Aunque pueden parecer intimidantes los comandos de la ficha


Programador con el paso del tiempo te irás familiarizando poco a
poco con cada uno de ellos.

La grabadora de macros
Puedes crear una macro utilizando el lenguaje de programación VBA,
pero el método más sencillo es utilizar lagrabadora de macros que
guardará todos los pasos realizados para ejecutarlos posteriormente.

La grabadora de macros en Excel 2010

La grabadora de macros almacena cada acción que se realiza en


Excel, por eso es conveniente planear con antelación los pasos a
seguir de manera que no se realicen acciones innecesarias mientras
se realiza la grabación. Para utilizar la grabadora de macros debes ir a
la ficha Programador y seleccionar el comandoGrabar macro.
Al pulsar el botón se mostrará el cuadro de diálogo Grabar macro.

En el cuadro de texto Nombre de la macro deberás colocar el nombre


que identificará de manera única a la macro que estamos por crear.
De manera opcional puedes asignar un método abreviado de teclado
el cual permitirá ejecutar la macro con la combinación de teclas
especificadas.

La lista de opciones Guardar macro en permite seleccionar la


ubicación donde se almacenará la macro.

 Este libro. Guarda la macro en el libro actual.

 Libro nuevo. La macro se guarda en un libro nuevo y que


pueden ser ejecutadas en cualquier libro creado durante la
sesión actual de Excel.

 Libro de macros personal. Esta opción permite utilizar la


macro en cualquier momento sin importar el libro de Excel que
se esté utilizando.
También puedes colocar una Descripción para la macro que vas a
crear. Finalmente debes pulsar el botón Aceptar para iniciar con la
grabación de la macro. Al terminar de ejecutar las acciones planeadas
deberás pulsar el botón Detener grabación para completar la macro.

Artículos relacionados

Crear una macro


En esta ocasión mostraré cómo crear una macro en Excel utilizando
la grabadora de macros. La macro será un ejemplo muy sencillo pero
permitirá ilustrar el proceso básico de creación.

Voy a crear una macro que siempre introduzca el nombre de tres


departamentos de una empresa y posteriormente aplique un formato
especial al texto. Para iniciar la grabación debes ir al comando Grabar
macro que se encuentra en la ficha Programador lo cual mostrará el
siguiente cuadro de diálogo.
Observa cómo he colocado un nombre a la macro y además he
especificado el método abreviado CTRL+d para ejecutarla
posteriormente. Una vez que se pulsa el botón Aceptar se iniciará la
grabación. Observa con detenimiento los pasos.

Al terminar los pasos se pulsa el comando Detener grabación y la


macro habrá quedado guardada. Para ejecutar la macro recién
guardada seleccionaré una nueva hoja de Excel y seleccionaré el
comando Macros.
Al pulsar el comando Macros se mostrará la lista de todas las macros
existentes y de las cuales podrás elegir la más conveniente. Al hacer
clic sobre el comando Ejecutar se realizarán todas las acciones
almacenadas en la macro y obtendrás el resultado esperado. Por
supuesto que si utilizas el método abreviado de teclado de la macro
entonces se omitirá este último cuadro de diálogo.

El código de la Grabadora
de macros
Una manera muy interesante de descubrir y aprender más sobre
código VBA es analizar el código generado por la Grabadora de
macros. Para este ejemplo grabaremos una macro muy sencilla que
solamente cambie el color de la fuente de la celda actual.
Para comenzar debemos ir a la ficha Programador y pulsar el
comando Grabar macro lo cual mostrará el cuadro de diálogo donde
asignaré un nombre a la macro que estoy por crear.

Pulsa el botón Aceptar y se comenzarán a grabar todas las acciones,


así que debes actuar con cuidado porque se grabará absolutamente
todo. Para la macro que estoy grabando solo haré lo siguiente: iré a la
ficha Inicio y pulsaré el comando Color de fuente y seleccionaré el
color rojo para la celda activa.

Una vez hecho esto debo detener la grabación de la macro y una


alternativa para hacerlo es pulsar el icono que se muestra en la barra
de estado.
Ahora que ya hemos generado la macro, pulsa el botón Macros que se
encuentra en el grupo Código de la ficha Programador. Se mostrará el
cuadro de diálogo Macro que enlista todas las macros que hemos
creado.

Selecciona la macro recién creada y pulsa el botón Modificar. Esto


abrirá el Editor de Visual Basic y mostrará elcódigo generado para la
macro.
Observando este código podemos aprender varias cosas. Para
empezar observamos que el objeto Selection tiene una propiedad
llamada Font que es la que hace referencia a la fuente de la celda o
rango seleccionado. A su vez, la propiedad Font tiene otra propiedad
llamada Color que es precisamente la que define el color rojo de
nuestra celda.

Aunque este ha sido un ejercicio muy sencillo, cuando tengas


curiosidad o duda sobre qué objetos utilizar alprogramar en
VBA considera utilizar la Grabadora de macros para darte una idea
del camino a seguir.

Establecer seguridad de
macros
La seguridad es un tema importante al hablar de macros en Excel. Si
abres algún archivo que contenga una macro maliciosa puedes causar
algún tipo de daño al equipo. De manera predeterminada Excel no
permite ejecutar macros automáticamente.

Sin embargo, si estás creando tus propias macros y deseas remover


esta protección porque sabes que no existe código malicioso,
entonces puedes modificar la configuración para habilitar todas las
macros. Para hacerlo debes seguir los siguientes pasos.

Haz clic en la ficha Archivo y posteriormente en Opciones. Dentro del


cuadro de diálogo mostrado selecciona la opción Centro de
confianza y posteriormente pulsa el botón Configuración del centro
de confianza. Se mostrará el cuadro de diálogo Centro de confianza.
Dentro de la sección Configuración de macros selecciona alguna de
las opciones disponibles.

 Deshabilitar todas las macros sin notificación. Deshabilita


las macros y permite ejecutar solamente aquellas que estén
almacenadas en un lugar confiable. Los lugares confiables se
configuran en la sección Ubicaciones de confianza del mismo
cuadro de diálogo.

 Deshabilitar todas las macros con notificación. Muestra una


alerta de seguridad advirtiendo sobre la intención de ejecutar
una macro de manera que se pueda decidir si se desea ejecutar.
Esta es la opción predeterminada de Excel.

 Deshabilitar todas las macros excepto las firmadas


digitalmente. Solamente se podrán ejecutar las macros que
están firmadas digitalmente.

 Habilitar todas las macros. Permite ejecutar todas las macros


sin enviar alguna notificación al usuario. Esta opción es útil si se
ejecutan múltiples macros totalmente confiables. Esta opción es
la que corre los mayores riesgos al ejecutar una macro de una
fuente desconocida.
Una vez seleccionada la opción deseada se debe pulsar el botón
Aceptar para hacer los cambios permanentes.

PROGRAMACIÓN

Programando en VBA
Excel 2010 es una de las herramientas de software más poderosas
para el manejo, análisis y presentación de datos. Aun y con todas sus
bondades, en ocasiones Excel no llega a suplir algunas necesidades
específicas de los usuarios.

Afortunadamente Excel cuenta con VBA que es un lenguaje de


programación que permite extender las habilidades del programa para
cubrir nuestros requerimientos. Utilizando VBA se pueden desarrollar
nuevos algoritmos para analizar la información o para integrar a Excel
con alguna otra aplicación como Microsoft Access.

Principios fundamentales

La programación en VBA puede ser un tanto misteriosa para la


mayoría de los usuarios de Excel, sin embargo una vez que se
comprenden los principios básicos de programación en VBA se
comenzarán a crear soluciones robustas y efectivas.

El primer concepto importante a entender es que cada elemento de


Excel es representado en VBA como unobjeto. Por ejemplo, existe el
objeto Workbook que representa a un libro de Excel. También existe
el objetoSheet que representa una hoja y el objeto Chart para un
gráfico.

El segundo concepto importante a entender es que cada uno de estos


objetos tiene propiedades y métodos. Para explicar mejor este
concepto utilizaré una analogía.

Propiedades y Métodos

Supongamos que tenemos el objeto auto. Así es, un auto como el que
manejamos todos los días para ir al trabajo. Este auto tiene
varias propiedades como son: marca, modelo, color, tipo de
transmisión las cuales ayudan a describir mejor al auto. También
hay propiedades que indican su estado actual como por ejemplo
gasolina disponible, temperatura del aceite, velocidad, kilómetros
recorridos entre otras propiedades más. Podemos decir que
las propiedades de un objeto nos ayudan a describirlo mejor en todo
momento.

Por otro lado tenemos los métodos de un objeto que en resumen son
las acciones que podemos realizar con dicho objeto. Por ejemplo, con
nuestro auto podemos hacer lo siguiente: encenderlo, avanzar, vuelta
a la izquierda, vuelta a la derecha, reversa, detener, apagar, etc. Todas
las acciones que se pueden llevar a cabo con un objeto son conocidas
como métodos.

Volviendo al terreno de Excel, el


objeto Workbook tiene propiedades como ActiveSheet (Hoja activa),
Name(Nombre), ReadOnly (Solo Lectura), Saved (Guardado) y
algunos de sus métodos son Save (Guardar), Close(Cerrar),
PrintOut (Imprimir), Protect (Proteger), Unprotect (Desproteger).

Será dificil mencionar todos los objetos de Excel y sus propiedades en


esta publicación, pero lo importante a recordar en este ocasión es que
cada elemento de Excel está siempre representado por un objeto en
VBA y cada objeto tiene a su vez propiedades y métodos que nos
permitirán trabajar con nuestros datos.

Cadenas de texto en VBA


Existen varias funciones en VBA que podemos utilizar para manipular
cadenas de texto. A continuación revisaremos algunas de estas
funciones VBA y observaremos el resultados de cada una de ellas.

Para iniciar con esta revisión, debes colocar un botón de comando


dentro de una hoja de Excel y después hacer doble clic sobre él para
introducir el código.
Unir cadenas de texto

Para unir dos (o más) cadenas de texto podemos utilizar el operador


&. Observa el siguiente código:

El resultado de este código es el siguiente:

La función Left

La función Left en VBA nos ayuda a extraer un número determinado


de caracteres a la izquierda de la cadena de texto.
En el código he especificado los 7 caracteres a la izquierda de la
cadena de texto. El resultado es el siguiente:

La función Right

La función Right nos permite extraer caracteres a la derecha de una


cadena de texto. Observa el siguiente código:

En esta función la cuenta de caracteres se hace de derecha a


izquierda siendo el último carácter de la cadena de texto el primero
que extraerá la función Right. Para este ejemplo he pedido los últimos
5 caracteres a la derecha de la cadena de texto:
La función Len

La función Len nos ayuda a conocer la longitud de una cadena de


texto, es decir, la cantidad de caracteres que conforman a una cadena.

La función Len contará cada uno de los caracteres de la cadena y


regresará un número:

La función InStr

La función InStr devuelve la posición de un carácter dentro de la


cadena. Supongamos que quiero encontrar la posición de la letra “M”
dentro de la cadena que contiene el valor “Hola Mundo”.
Es importante resaltar que la función InStr es sensible a mayúsculas y
minúsculas. Observa cómo he especificado buscar la letra “M”
(mayúscula) y el resultado de la función es el siguiente:

La función InStr encontró la letra “M” en la posición número 6


comenzando desde la izquierda. Si en lugar de la letra “M” busco la
letra “m” (minúscula), la función InStr devolverá el valor 0 (cero)
indicando que no ha encontrado dicha letra.

Además de indicar letras individuales en la función InStr, también


podemos especificar palabras completas por ejemplo:

cadena = "Hola Mundo"

InStr (cadena, "Mundo")

Por ejemplo, al buscar la palabra “Mundo” dentro de la cadena de


texto obtendremos como resultado la posición número 6 ya que en esa
posición comienza la palabra “Mundo”.

La función Mid

Con la función Mid podemos extraer una subcadena de otra cadena


de texto con tan solo especificar la posición inicial de la subcadena y
su longitud. Observa el siguiente ejemplo:
La función Mid se moverá a la posición 15 de la cadena y a partir de
ahí contará 7 caracteres y devolverá como resultado la cadena
comprendida entre ambas posiciones. En nuestro ejemplo, la palabra
“funcion” es la que se encuentra entre dichas posiciones.

Las funciones de texto en VBA nos ayudarán a manipular


adecuadamente las cadenas de texto y podremos obtener los
resultados que necesitamos.

La declaración If-Then en
VBA
En ocasiones necesitamos ejecutar algunas líneas de código de
nuestra macro solamente cuando alguna condición se haya cumplido.
La declaración If-Then nos permite validar una condición para tomar
una decisión adecuada.

La sentencia If-Then en VBA es la más básica de todas las


declaraciones de control de flujo que son aquellas declaraciones que
nos permiten tomar decisiones en base a una condición. Esta
declaración la podemos traducir como Si-Entonces y la utilizaremos en
situaciones donde necesitamos realizar la siguiente evaluación:Si se
cumple la condición Entonces haz esto.

Ejemplo de la declaración If-Then

Para probar el funcionamiento de la declaración If-Then inserta un


botón de comando (Control ActiveX) en una hoja de Excel y haz doble
clic sobre él para colocar el siguiente código:

 En el primer paso se hace la declaración de las variables que


utilizaré en el resto del código.

 En el segundo paso asigno el valor de la celda A1 a la


variable calificación.

 El tercer paso contiene la declaración If-Then y que prueba Si el


valor de la variable calificación es mayor o igual a 60. En caso
de ser verdadero Entonces se asigna el valor “Aprobado” a la
variable resultado.

 El último paso es asignar el valor de la variable resultado a la


celda B2.

Ahora observa el resultado al ejecutar esta macro.


La declaración If-Then-Else

Parece que todo funciona muy bien en el código anterior pero aún lo
podemos mejorar agregando la declaración Else de manera que
tengamos una declaración de la forma If-Then-Else. Esta variante nos
permite hacer la siguiente evaluación: Si se cumple la
condición Entonces haz esto De lo contrario haz otra cosa.

La declaración Else en VBA nos permite indicar otro bloque de


instrucciones que se deben ejecutar en caso de que la condición sea
falsa. De esta manera podemos tomar una acción determinada en
caso de que la condición se cumpla o en caso de que no se cumpla.
Ahora modificaré el ejemplo anterior para asegurarme de que en caso
de que la condición de calificación mayor o igual a 60 no se cumpla se
despliegue el resultado “reprobado”. Observa el siguiente código.

En el tercer paso puedes observar la declaración If-Then-Else. Ahora


observa el efecto de este cambio al momento de ejecutar el código:
Por último quiero que observes que en este segundo ejemplo
la declaración If-Then-Else termina con la declaración End If.
Siempre que utilicemos la declaración If-Then o la declaración If-Then-
Else debemos terminar con End If.

La única ocasión donde no se termina con End If es cuando la


declaración If-Then se puede colocar en una sola línea como es el
caso del primer ejemplo de este artículo.

Acceder celdas con VBA


Existe un par de maneras para acceder las celdas de nuestras hojas
utilizando VBA. Podemos utilizar el objeto Range y también podemos
utilizar el objeto Cells. A continuación revisaremos ambos objetos.

Seleccionar una celda

Si deseamos seleccionar la celda B5 podemos utilizar cualquiera de


las dos instrucciones siguientes:

Range("B5").Select

Cells(5, 2).Select

El objeto Cells tiene como primer argumento el número de fila y como


segundo argumento el número de columna.

Seleccionar un rango

Para seleccionar un rango de celdas lo más conveniente es utilizar el


objeto Range de la siguiente manera:

Range("A1:D5").Select
El objeto Cells no nos permite seleccionar un rango porque solamente
podemos especificar una celda a la vez.

Establecer el valor de una celda

Para establecer el valor de una celda podemos utilizar alguna de las


siguientes instrucciones:

Range("B5").Value = 500

Cells(5, 2).Value = 600

Ventaja del objeto Cells

Es mucho más común encontrarse el objeto Range en las aplicaciones


VBA, sin embargo el objeto Cells ofrece una ventaja que debemos
considerar cuando necesitamos hacer un recorrido programático por
varias celdas ya que será muy sencillo especificar las filas y columnas
utilizando una variable numérica.

For i = 1 To 10

For j = 1 To 5

Cells(i, j).Value = i * j

Next j

Next i

El bucle For-Next en VBA


En términos de programación, un bucle es una instrucción que nos
permitirá ejecutar repetidamente un conjunto de instrucciones hasta
que se cumpla la condición que hayamos especificado. Los bucles
también son conocidos como ciclos.

La instrucción For-Next

El bucle For-Next es una de las instrucciones más útiles al programar


en VBA. La sintaxis de esta instrucción es la siguiente:
For inicialización de variable To límite

{Conjunto de instrucciones que se repetirán}

Next incrementar variable

 Inicialización de variable: Ya que la instrucción For Next repite


un conjunto de instrucciones un número de veces específico,
debemos inicializar una variable que irá contando cada una de
las repeticiones. Es común encontrar la instrucción escrita
como For i = 1 lo cual indica que la variable i llevará la cuenta de
las repeticiones que deseamos que inicien en 1.

 Límite: Además de inicializar la variable que llevará la cuenta de


las repeticiones, debemos especificar un límite donde se
detendrá el ciclo. Este límite es indicado con la instrucción To.
De esta manera, si deseamos hacer un bucle que vaya desde 1
hasta 5 la instrucción la escribiremos como For i = 1 To 5.

 Incrementar variable: El final del conjunto de instrucciones se


indica con la instrucción Next y que va seguida del nombre de la
variable que lleva la cuenta para incrementar su valor en uno.
Así podemos terminar el bucle con la instrucción Next i.

Ejemplo de un bucle For-Next

A continuación un ejemplo muy sencillo de un bucle For-Next donde


la única instrucción que se repite es la de mostrar una ventana de
diálogo con el valor de la variable i:

Con este bucle provocaremos que se muestre una ventana de diálogo


5 veces y en cada una de ellas se mostrará el valor actual de la
variable i que comenzará con 1 y terminará con 5. Observa el
resultado:
Ya que la variable i comienza con el valor 1, el primer cuadro de
diálogo muestra el mensaje “i = 1”, después “i = 2” y así
sucesivamente hasta llegar al límite. El bucle For-Next en VBA nos
ayudará a crear ciclos que ejecutarán un conjunto de instrucciones
hasta alcanzar el límite que hayamos especificado.

Operadores lógicos en
VBA
Los operadores lógicos más comunes en VBA son: And y Or. Cada
uno de estos operadores es de mucha utilidad para evaluar
condiciones y tomar decisiones adecuadas sobre el código que será
ejecutado.

El operador lógico And

El operador lógico And es el operador que nos ayuda a forzar el


cumplimiento de dos condiciones. Este operador lo traducimos como
“Y” de manera que para ejecutar un bloque de código se debe cumplir
lacondición1 Y la condición2.

En el siguiente ejemplo tengo la calificación de dos exámenes.


Solamente si ambos exámenes tienen una calificación mayor a 70,
entonces el estudiante será aprobado, de lo contrario la calificación
será reprobatoria.

El código que se ejecutará al pulsar el botón será el siguiente:

Al ejecutar este código obtendremos el resultado “Aprobado” ya que


ambos exámenes tienen una calificación mayor a 70:

De esta manera comprobamos que el operador lógico And nos


ayuda a forzar que ambas condiciones se cumplan. En cambio, si el
valor de una de las celdas es menor a 70, entonces tendremos un
resultado diferente:
El operador lógico And devolverá el valor verdadero solamente
cuando ambas condiciones se cumplan y será suficiente con que una
de ellas no se cumpla para obtener un resultado negativo.

El operador lógico Or

El operador lógico Or lo traducimos como “O” y nos permitirá saber si


al menos una de las condiciones se cumple, es decir, si la condición1
O la condición2 se cumplen.

Si cambiamos un poco el ejemplo anterior y decimos que es suficiente


que alguna de las dos calificaciones sea mayor a 70 para que el
estudiante sea aprobado, entonces podemos modificar el código de la
siguiente manera:

Si alguna de las calificaciones es mayor a 70, entonces el estudiante


será aprobado:

La única manera en que el operador lógico Or nos devuelva un valor


falso es que ninguna de las condiciones se cumpla. En nuestro
ejemplo, el alumno estará reprobado solamente cuando ambas
calificaciones sean menores a 70:

Podemos concluir que al evaluar dos condiciones, los operadores And


y Or se comportarán de la siguiente manera:

Eventos en VBA
Los eventos en VBA nos ayudan a monitorear las acciones que
realizan los usuarios en Excel de manera que podamos controlar la
acción a tomar cuando el usuario hace algo específico como el activar
una hoja o hacer clic en alguna celda.

Ejemplos de eventos en VBA

Algunos ejemplos de eventos en VBA son los siguientes:

 WorkbookOpen: El usuario abre un libro de Excel.

 WorkbookActivate: El usuario activa un libro de Excel.

 SelectionChange: El usuario cambia la selección de celdas en


una hoja.

Para descubrir los eventos que tiene un objeto es suficiente con abrir
el Editor de Visual Basic y posteriormente el Examinador de objetos
(F2). En el panel izquierdo se mostrarán los objetos y en el panel
derecho las propiedades, métodos y eventos de dicho objeto. Podrás
distinguir los eventos porque tienen un icono en forma de rayo (color
amarillo):

Un ejemplo de eventos en VBA

El ejemplo que crearemos en esta ocasión es para activar un cuadro


de diálogo con el mensaje “Bienvenido a la Hoja 2” y que se mostrará
cuando activemos la Hoja2 de nuestro libro. Para comenzar, debes
seleccionar el objeto Hoja2 del panel izquierdo del Editor de Visual
Basic y posteriormente seleccionar la opción Worksheet:
Esto creará automáticamente la subrutina para el evento
SelectionChange pero podemos fácilmente crear otro evento
seleccionándolo de la lista de Procedimientos. Para este ejemplo
crearé el evento Activate:

Una vez creada la subrutina para el evento Activate solamente


insertaré el código para que se muestre el mensaje dentro del cuadro
de diálogo:

Ahora que hemos definido una acción asociada al evento Activate de


la Hoja2, el mensaje se mostrará cada vez que actives la Hoja2.
Los eventos en VBA son de mucha utilidad porque nos ayudan a
controlar el momento exacto en que deseamos ejecutar algún bloque
de código al iniciarse alguna acción por el usuario.

Arreglos en VBA
Los arreglos en VBA pueden ser entendidos como un grupo de
variables contenidas dentro de otro repositorio. Dentro de un arreglo
podemos referirnos a un valor específico (elemento) utilizando su
posición (índice).

Para comprender mejor lo que es un arreglo observa la siguiente


imagen:

Un arreglo es una colección de “casillas” que contendrán variables


individuales. Casa casilla tendrá un número de índice el cual nos
permitirá asignar u obtener el valor que contiene.

Crear un arreglo en VBA

Para crear un arreglo en VBA utilizamos la siguiente instrucción:

Dim Paises(1 To 5) As String

Con este código estamos creando el arreglo llamado Paises que


tendrá 5 elementos y estamos indicando que cada uno de los
elementos será del tipo String, es decir, cadenas de texto. Una vez
que ha sido creado el arreglo podemos asignar sus valores de la
siguiente manera.
Paises(1) = "Argentina"

Paises(2) = "Colombia"

Paises(3) = "España"

Paises(4) = "México"

Paises(5) = "Perú"

Acceder un elemento del arreglo

Para acceder cualquier elemento del arreglo simplemente colocamos


el nombre del arreglo seguido por paréntesis y el número de índice del
elemento que necesitamos. Por ejemplo, para desplegar un mensaje
con el nombre de país España puedo utilizar la siguiente instrucción:

MsgBox Paises(3)

El resultado de esta instrucción será el siguiente:

Artículos relacionados
Variables en VBA
Cadenas de texto en VBA

Publicado por Moisés el 25 de julio, 2012.


3 comentarios en “Arreglos en VBA”

1. Victor Luna

Hay arreglos bidimensionales?

1. Moisés Ortíz Autor

Hola Víctor, por supuesto que hay arreglos


bidimensionales en VBA, los puedes declarar de la
siguiente manera:
Dim Arreglo2D(2,2)
Fecha y hora en VBA
Los valores de fecha y hora en VBA pueden ser manipulados de
diversas maneras. En esta ocasión aprenderemos cómo obtener el
año, mes y día en VBA y cómo hacer operaciones básicas con fechas.

Para realizar estos ejemplos debes colocar un control de botón en una


hoja de Excel y colocar las líneas de código mostradas.

Obtener la fecha y hora actual

Para obtener la fecha actual en VBA utilizamos la función Date y para


obtener la hora actual usamos Now.

En este ejemplo las variables fechaActual y horaActual contienen la


fecha y horas actuales respectivamente.

Obtener el año, mes y día

En el ejemplo anterior he obtenido la fecha actual en la


variable fechaActual, sin embargo, si deseo mostrar solamente el año
puedo utilizar la función Year.
El resultado de este código es el siguiente:

Al trabajar con fechas podremos obtener el mes utilizando la función


Month y para obtener el día la función Day.

Obtener la hora, minuto y segundo

Para obtener la hora de la variable horaActual utilizaremos la función


Hour de la siguiente manera:

El resultado es el siguiente:

Para obtener el minuto y el segundo podremos utilizar las funciones


Minute y Second.

Convertir una cadena de texto en fecha


Ya hemos visto que la función Date nos devuelve la fecha actual, pero
podemos utilizar otra función que nos permitirá convertir una cadena
de texto en una fecha. La función que utilizaremos para este será la
función DateValue.

El único argumento de la función DateValue es la cadena de texto que


convertirá en fecha. El resultado de esta conversión es el siguiente:

Sumar días a una fecha

Para sumar días a una fecha en VBA utilizaremos la función DateAdd.


Esta función nos permite especificar la cantidad exacta de días a
sumar:
Observa el resultado de sumar 5 días a la fecha original:

El primer argumento de la función DateAdd determina la unidad de


tiempo que será sumada. En este ejemplo especifiqué “d” para indicar
días, pero podemos utilizar otras medidas de tiempo:

 “yyyy” para años

 “m” para meses

 “d” para días

 “ww” para semanas

Las fechas y horas son un tipo de dato muy común con el que
seguramente tendrás que trabajar al crear tus macros. Es importante
que aprendas a utilizar las funciones VBA que nos permitirán
manipular adecuadamente la información.

Funciones VBA
El lenguaje de programación VBA contiene un número considerable
de funciones que podemos utilizar para construir código en Excel.
Cuando estás escribiendo código, puedes introducir la palabra VBA
seguida de un punto y verás una lista desplegable de estas funciones.

La siguiente tabla provee una descripción breve de algunas de


las funciones VBA más utilizadas.

FUNCIÓN DESCRIPCIÓN
Abs Regresa el valor absoluto de un número

Asc Obtiene el valor ASCII del primer caracter de


una cadena de texto

CBool Convierte una expresión a su valor booleano

CByte Convierte una expresión al tipo de dato Byte

CCur Convierte una expresión al tipo de dato moneda


(Currency)

CDate Convierte una expresión al tipo de dato fecha


(Date)

CDbl Convierte una expresión al tipo de dato doble


(Double)

CDec Convierte una expresión al tipo de dato decimal


(Decimal)

Choose Selecciona un valor de una lista de argumentos

Chr Convierte un valor ANSI en valor de tipo texto

CInt Convierte una expresión en un dato de tipo


entero (Int)

CLng Convierte una expresión en un dato de tipo


largo (Long)

CreateObject Crea un objeto de tipo OLE

CStr Convierte una expresión en un dato de tipo


texto (String)

CurDir Regresa la ruta actual

CVar Convierte una expresión en un dato de tipo


variante (Var)

Date Regresa la fecha actual del sistema

DateAdd Agrega un intervalo de tiempo a una fecha


especificada

DateDiff Obtiene la diferencia entre una fecha y un


intervalo de tiempo especificado

DatePart Regresa una parte específica de una fecha

DateSerial Convierte una fecha en un número serial

DateValue Convierte una cadena de texto en una fecha

Day Regresa el día del mes de una fecha

Dir Regresa el nombre de un archivo o directorio


que concuerde con un patrón

EOF Regresa verdadero si se ha llegado al final de


un archivo

FileDateTime Regresa la fecha y hora de la última


modificación de un archivo

FileLen Regresa el número de bytes en un archivo

FormatCurrency Regresa un número como un texto con formato


de moneda

FormatPercent Regresa un número como un texto con formato


de porcentaje

Hour Regresa la hora de un valor de tiempo

IIf Regresa un de dos partes, dependiendo de la


evaluación de una expresión

InputBox Muestra un cuadro de diálogo que solicita la


entrada del usuario

InStr Regresa la posición de una cadena de texto


dentro de otra cadena

InStrRev Regresa la pocisión de una cadena de texto


dentro de otra cadena pero empezando desde
el final
Int Regresa la parte entera de un número

IsDate Regresa verdadero si la variable es una fecha

IsEmpty Regresa verdadero si la variable está vacía

IsError Regresa verdadero si la expresión es un valor


de error

IsNull Regresa verdadero si la expresión es un valor


nulo

IsNumeric Regresa verdadero si la variable es un valor


numérico

Join Regresa una cadena de texto creada al unir las


cadenas contenidas en un arrreglo

LCase Regresa una cadena convertida en minúsculas

Left Regresa un número específico de caracteres a


la izquierda de una cadena

Len Regresa la longitud de una cadena (en


caracteres)

LTrim Remueve los espacios a la izquierda de una


cadena

Mid Extrae un número específico de caracteres de


una cadena de texto

Minute Regresa el minuto de una dato de tiempo

Month Regresa el mes de una fecha

MsgBox Despliega un cuadro de dialogo con un


mensaje especificado

Now Regresa la fecha y hora actual del sistema

Replace Reemplaza una cadena de texto con otra

Space regresa una cadena de texto con el número de


espacios especidicados

Split Regresa un arreglo formado for cadenas de


texto que formaban una sola cadena

Str Regresa la representación en texto de un


número

Right Regresa un número especificado de carecteres


a la derecha de una cadena de texto

Rnd Regresa un número aleatorio entre 0 y 1

Round Redondea un número a una cantidad específica


de decimales

RTrim Remueve los espacios en blanco a la derecha


de una cadena de texto

Second Regresa los segundos de un dato de tiempo

StrComp Compara dos cadenas de texto

StrReverse Invierte el orden de los caracteres de una


cadena

Time Regresa el tiempo actual del sistema

Timer Regresa el número de segundos desde la


media noche

TimeValue Convierte una cadena de texto a un númer de


serie de tiempo

Trim Remueve los espacios en blanco al inicio y final


de una cadena de texto

TypeName Obtiene el nombre del tipo de dato de una


variable

UCase Convierte una cadena de texto en mayúsculas

Val Regresa el número contenido en una cadena


de texto
Weekday Regresa un número que representa un día de
la semana

WeekdayName Regresa el nombre de un día de la semana

Year Obtiene el año de una fecha

Creando una función VBA


Como hemos visto en el artículo Tu primera macro con VBA, una
subrutina nos ayuda a organizar y agrupar las instrucciones en nuestro
código. El día de hoy te mostraré cómo crear una función VBA, la
cual es similar a una subrutina excepto por una cosa.

A diferencia de las subrutinas, las funciones VBA fueron diseñadas


para retornar un valor. A través de una función podemos agrupar
código que nos ayudará a hacer algún cálculo específico y obtener un
resultado de regreso. Una función VBA también es conocida
como Función Definida por el Usuario, UDF por sus siglas en inglés, y
una vez creada puede ser utilizada de la misma manera que las
funciones incluidas en Excel como la función SUMAR o la función
BUSCARV. Esto hace que las funciones VBA sean una herramienta
muy poderosa.

A continuación mostraré una función que toma un rango y regresa la


suma de cada una de sus celdas. Es importante insertar el código
dentro de un Módulo tal como se muestra en el artículo Tu primera
macro con VBA. Posteriormente iré explicando el detalle de la función.
La palabra clave Function

La primera línea de código comienza con la palabra Function la cual


define el inicio de la función. Observa también cómo la última línea de
código es End Function que está especificando el término de la
función.

Inmediatamente después de la palabra clave Function se debe


especificar el nombre de la función que en este ejemplo
es MiSuma seguida de paréntesis que de manera opcional pueden
contener una lista de parámetros.

Parámetros de una función VBA

Los parámetros son el medio por el cual pasamos información de


entrada a la función. Algunas funciones necesitarán de dichas
entradas para realizar algún cálculo y algunas otras no, es por ello que
los parámetros de una función son opcionales. Puedes incluir tantos
parámetros como sean necesarios y solamente debes recordar
separarlos por una coma.

Un parámetro no es más que una variable y por lo tanto puedes


observar que en el ejemplo he definido la variable rango que será del
tipo Range.

Valor de retorno

Como mencioné al principio, la característica principal de una función


es que puede regresar un valor. Es por eso que al definir una función
se debe indicar el tipo del valor de retorno que tendrá dicha función.
En este caso el valor de retorno será de tipo Double y se está
especificado por las palabras As Double que aparecen después de
los paréntesis.

Cuerpo de la función VBA

Una vez definida la función se pueden especificar todas las


instrucciones que serán ejecutas. En el ejemplo he comenzado por
definir un par de variables, la variable celda que será del tipo Range y
la variable resultado del tipo Double. En ésta última variable es donde
se irá acumulando la suma de todas las celdas.

La parte central de la función se encuentra en la instrucción For


Each ya que realiza un recorrido por todas las celdas del rango que
fue especificado como parámetro. Para cada celda que se encuentra
se va sumando su contenido en la variable resultado.
Retornando el valor

Una vez que se han hecho los cálculos necesarios, es importante


regresar el valor. Para hacerlo es indispensable igualar el nombre de
la función al valor o variable que contiene el valor que se desea
regresar. En nuestro ejemplo, la variable resultado es la que contiene
la suma de todas las celdas por lo que se iguala con el nombre de la
función en la línea MiSuma = resultado.

Probando la función VBA

Finalmente probaré la funciónVBA recién creada dentro de una hoja


de Excel. Tal como lo definimos en el código, el único parámetro de la
función debe ser un rango del cual me regresará la suma de los
valores de la celda. Observa el siguiente ejemplo.

Aunque la función MiSuma hace lo mismo que la función de Excel


SUMAR, nos ha servido de ejemplo para introducir el tema de las
funciones en VBA. Con este ejemplo tan sencillo hemos creado
nuestra primera función VBA.

CONTROLES

Controles de formulario en
Excel
Los controles de formulario en Excel son objetos que podemos
colocar dentro de una hoja de nuestro libro, o dentro de un formulario
de usuario en VBA, y nos darán funcionalidad adicional para
interactuar mejor con los usuarios y tener un mejor control sobre la
información.
Podemos utilizar estos controles para ayudar a los usuarios a
seleccionar elementos de una lista predefinida o permitir que el
usuario inicie una macro con tan solo pulsar un botón. Los controles
de formulario en Excel se encuentran dentro de la ficha Programador
dentro del grupo Controles. Solamente pulsa el botón Insertar y
observarás cada uno de ellos:

Justo por debajo de los controles de formulario podrás observar el


grupo de controles ActiveX pero sus diferencias y similitudes las
discutiremos en otro artículo. Por ahora nos enfocaremos solamente
en los controles de formulario.

¿Cómo insertar un control de formulario en Excel?

Para insertar cualquiera de los controles de formulario debes


seleccionarlo del menú desplegable y hacer clic sobre la hoja de Excel
arrastrando el borde para “dibujar” el contorno del control. Observa
este procedimiento.

Los diferentes controles de formulario


Existen diferentes tipos de controles de formulario en Excel que
ofrecen diversos tipos de funcionalidad e interacción con el usuario.
Desde una simple etiqueta hasta controles que permiten una selección
múltiple de sus opciones. A continuación una breve descripción de
cada uno de ellos.

 Barra de desplazamiento. Al hacer clic en las flechas se va


desplazando la barra dentro de un intervalo predefinido.

 Botón. El botón nos permite ejecutar una macro al momento de


hacer clic sobre él.

 Botón de opción. Nos permite una única selección dentro de un


conjunto de opciones.

 Casilla de verificación. Permite la selección o no selección de


una opción.

 Control de número. Nos ayuda a aumentar o disminuir un


valor numérico.

 Cuadro combinado. Es una combinación de un cuadro de texto


con un cuadro de lista.

 Cuadro de grupo. Agrupa varios controles dentro de un


rectángulo.

 Cuadro de lista. Muestra una lista de valores de los cuales


podemos elegir una sola opción o múltiples opciones de
acuerdo a la configuración del control.

 Etiqueta. Permite especificar un texto o breves instrucciones en


el formulario.

Controles de formulario no disponibles en Excel 2010

Los controles de formulario han estado presentes por varias versiones


de Excel, sin embargo a partir de Excel 2010 existen algunos controles
que ya no pueden ser utilizados dentro de las hojas como lo son
el Campo de texto, el Cuadro combinado de lista y el Cuadro
combinado desplegable, sin embargo podremos alcanzar
funcionalidad similar utilizando controles ActiveX.
Controles ActiveX en Excel
Los controles ActiveX son un tipo de controles que nos permiten
agregar funcionalidad de formularios a nuestros libros de Excel. Existe
otro tipo de controles que es conocido como Controles de formulario y
que tienen una funcionalidad similar, sin embargo existen algunas
diferencias entre ambos tipos.

Controles ActiveX y controles de formulario

Los controles de formulario fueron introducidos desde la versión 4 de


Excel y por lo tanto han estado presentes en la aplicación por más
tiempo que los controles ActiveX los cuales comenzaron a ser
utilizados a partir de Excel 97. Ya que los controles ActiveX fueron
introducidos posteriormente ofrecen más posibilidades de
configuración y formato que los controles de formulario. Ambos tipos
de controles se encuentran en la ficha Programador.

La diferencia más significativa entre ambos es la manera en como


podemos obtener información de los controles al momento de
interactuar con el usuario. Los controles de formulario solamente
responderán después de que el usuario ha interactuado con ellos,
como después de haber pulsado el botón. Por el contrario, los
controles ActiveX responden de manera continua a las acciones del
usuario lo cual nos permite realizar acciones como cambiar el tipo de
puntero del mouse que se muestra al colocar el puntero del ratón
sobre el botón.

Propiedades de los controles ActiveX


A diferencia de los controles de formulario, los controles ActiveX tienen
una serie de propiedades que podemos configurar pulsando el botón
Propiedades que se encuentra dentro del grupo Controles de la ficha
Programador.

Antes de poder ver las propiedades de un control ActiveX debemos


pulsar el botón Modo Diseño el cual nos permitirá seleccionar el
control y posteriormente ver sus propiedades. Cada tipo de control
ActiveX mostrará una ventana de Propiedades con sus propias
características. A continuación un ejemplo de la ventana Propiedades
para un botón de comando ActiveX:

Controles ActiveX con subrutinas VBA


Otra diferencia entre los controles de formulario y los controles ActiveX
es que los primeros pueden tener asignada una macro y al hacer clic
sobre el control de formulario se iniciará la ejecución de dicha macro.

Los controles ActiveX no tienen asignada una macro explícitamente


sino que podemos asignar código VBA para cada evento del control.
Un evento de un control ActiveX puede ser el evento de hacer clic
sobre el control, el evento de hacer doble clic, el evento de obtener el
foco sobre el control ActiveX, entre otros eventos más. Para asignar
código a uno de los eventos de un control ActiveX solamente debemos
hacer clic derecho sobre él y seleccionar la opción Ver código.

Esto mostrará el Editor de Visual Basic con una subrutina para el


evento Click() donde podremos escribir nuestro código.

En la lista desplegable de la derecha podemos observar la lista de


eventos disponibles para nuestro control ActiveX y para los cuales
podemos escribir código VBA. Al seleccionar cualquiera de dichos
eventos se insertará una nueva subrutina que podremos utilizar. Son
precisamente la gran cantidad de eventos disponibles para los
controles ActiveX lo que los hace controles muy poderosos que
podemos utilizar en nuestros formularios.

Otra ventaja de los controles ActiveX en Excel

En la versión de Excel 2010 algunos controles de formulario han


dejado de ser soportados y no podemos utilizarlos más en nuestras
hojas. Ese es el caso del control de formulario conocido como campo
de texto. Sin embargo, dentro de la lista de controles
ActiveX seguimos teniendo disponible el control llamado Cuadro de
texto lo cual puede hacer atractiva la opción de utilizar controles
ActiveX en Excel en lugar de controles de formulario.

Cuadro de texto en Excel


El cuadro de texto es un control ActiveX que muestra un campo vacío
donde el usuario puede introducir cualquier texto. En esta ocasión
revisaremos cómo incrustar un cuadro de texto y hacer referencia al
mismo desde código VBA.

Insertar un cuadro de texto en Excel

Para insertar un cuadro de texto en una hoja de Excel debes ir a


la ficha Programador y hacer clic en el botón Insertar y entonces hacer
clic sobre la opción Cuadro de texto de la sección Controles ActiveX.
El puntero del ratón se convertirá en una cruz la cual nos permitirá
dibujar el cuadro de texto sobre la hoja de Excel. Una vez dibujado el
cuadro de texto podrás hacer clic derecho sobre él y seleccionar la
opción Propiedades para conocer el nombre que la ha sido asignado.

También puedes ver las propiedades de cualquier control


seleccionándolo primero y pulsando el botón Propiedades que se
encuentra dentro del grupo Controles de la ficha Programador.

Modificar valor del cuadro de texto

Si deseas colocar un texto dentro del cuadro de texto desde VBA


puedes utilizar una instrucción como la siguiente:

TextBox1.Text = "Texto inicial"

Esto hará que el cuadro de texto se vea de la siguiente manera:

Leer valor del cuadro de texto

Si quieres leer el valor del cuadro de texto y colocarlo en una celda


podemos utilizar la siguiente instrucción:

Range("A1").Value = TextBox1.Text

El valor de la celda será el mismo que el del cuadro de texto.


Si deseas limpiar el cuadro de texto puedes utilizar la siguiente
instrucción:

TextBox1.Text = ""

Cuadro de lista en VBA


El cuadro de lista es un control ActiveX que nos permite desplegar
una serie de opciones de las cuales el usuario puede realizar una
selección. Podemos configurar el cuadro de lista para permitir
seleccionar uno o varios elementos de la lista.

Dibujar un cuadro de lista

Para insertar un cuadro de lista en una hoja de Excel debemos ir a la


ficha Programador y pulsar el botón Insertar para seleccionar la
opción Cuadro de lista (control ActiveX).

Especificar los elementos del cuadro de lista


Una alternativa para indicar los elementos de un cuadro de lista es a
través de la propiedad llamadaListFillRange. Para ello debemos abrir
las propiedades del control e indicar el rango de celdas que contiene
los elementos:

En este ejemplo he especificado que los valores sean tomados del


rango A1:A6, lo cual da como resultado uncuadro de lista con los
valores especificados en dicho rango:

Elementos del cuadro de lista por código

Otra alternativa para indicar los elementos de un cuadro de lista es a


través de código VBA. Para ello puedes incluir el siguiente código en
el evento Workbook_Open:
De esta manera cuando se abra el libro se agregarán las opciones
al cuadro de lista llamado ListBox1.

Asociar una celda al cuadro de lista

Adicionalmente podemos asociar una celda al cuadro de lista la cual


mostrará la selección que hagamos. Para hacer esta asociación
debemos especificar la dirección de la celda en la propiedad
LinkedCell:

De esta manera, cada vez que hagamos una selección de alguna de


las opciones del cuadro de lista se verá reflejado su valor en la celda
asociada:
Casilla de verificación en
VBA
Una casilla de verificación es un control ActiveX que podemos
utilizar para permitir que un usuario marque una opción y por lo tanto
poder conocer sus preferencias al verificar dicho valor en código VBA.

El control ActiveX casilla de verificación

Para insertar este control debemos ir al comando Insertar y


seleccionar la opción Casilla de verificación (Control ActiveX).

Después de dibujar este control tendrás el siguiente resultado:


Propiedades de una casilla de verificación

La primera propiedad que desearas modificar de una casilla de


verificación será su propiedad Caption que es la que almacena el
texto desplegado dentro del control ActiveX. Por ejemplo, si deseo que
el control muestre el texto “Mayor de edad” debo hacer el cambio de la
siguiente manera:

La otra propiedad de una casilla de verificación que tal vez quieras


modificar será la propiedad Value que de manera predeterminada
tendrá el valor False lo cual indica que el control se mostrará
desmarcado. Si deseas que el control se muestre marcado de manera
predeterminada, debes poner el valor True en la propiedadValue:
Valor de una casilla de verificación

Una casilla de verificación nos dirá su ha sido seleccionada o no, es


decir, nos devolverá un valor FALSO o VERDADERO. Para leer este
valor debemos acceder a la propiedad Value del control de la siguiente
manera:

Private Sub CheckBox1_Click()

Range("C4").Value = CheckBox1.Value

End Sub

Esta línea de código coloca el valor de la casilla de verificación en la


celda C4. De esta manera, al seleccionar la casilla de verificación
obtendré el siguiente resultado:

Para validar en VBA si la casilla de verificación tiene un valor u otro


podemos utilizar un código como el siguiente:
If CheckBox1.Value = True Then Range("C4").Value = 1

If CheckBox1.Value = False Then Range("C4").Value = 0

La primera línea valida si el control ActiveX tiene un valor verdadero y


de ser así coloca el número 1 en la celda C4. Si la casilla de
verificación no ha sido seleccionada (falso) entonces colocará el
número cero en la celda C4.

Botón de opción en VBA


Un botón de opción es un control ActiveX que nos permitirá
seleccionar una sola opción dentro de un grupo de botones de opción.
A diferencia de las casillas de verificación, los botones de opción
dependen uno del otro.

El botón de opción en Excel


Para insertar un botón de opción hacemos clic en el comando
Insertar de la ficha Programador.

Un solo botón de opción no hace mucho sentido, así que siempre


agregamos dos o más botones de opciónpara permitir que usuario
haga una selección de cualquiera de ellos.
Una vez que se ha agregado un segundo botón de opción podrás
notar que al seleccionar uno de ellos se desmarcarán todos los
demás.

La propiedad Caption
De manera predeterminada Excel colocará el botón de opción con un
nombre como OptionButton1. Para cambiar este texto debemos editar
la propiedad Caption del botón de opción.

El botón de opción en VBA


Para saber si un botón de opción ha sido seleccionado podemos
acceder a su propiedad Value de la siguiente manera:

1 Private Sub OptionButton1_Click()


2 If OptionButton1.Value = True Then MsgBox ("Has seleccionado la opción Hombre")
3 End Sub

La propiedad Value es la que nos indica si el control está


seleccionado, en cuyo caso, la propiedad será igual aTrue. Para este
ejemplo, al validar que el botón de opción está seleccionado, se
mostrará un cuadro de diálogo con un mensaje sobre la opción
seleccionada.

Formularios en VBA
Los formularios en VBA no son más que un cuadro de diálogo de
Excel donde podremos colocar controles que nos ayudarán a solicitar
información del usuario. Podremos colocar cajas de texto, etiquetas,
cuadros combinados, botones de comando, etc.

Crear un formulario en Excel

Los formularios de Excel son creados desde el Editor de Visual


Basic donde debemos seleccionar la opción de menú Insertar y
posteriormente la opción UserForm.

Inmediatamente se mostrar un formulario en blanco y de igual


manera podrás observar el Cuadro de herramientas:
Si no ves el Cuadro de herramientas puedes seleccionar el menú Ver
y la opción Cuadro de herramientas.

Agregar controles al formulario

Para agregar un control al formulario debes seleccionarlo del Cuadro


de herramientas y dibujarlo sobre el formulario. En mi formulario he
agregado etiquetas y cuadros de texto así como un par de botones de
comando:
El texto de las etiquetas se modifica en la propiedad llamada Caption.
Para realizar este cambio solamente selecciona el control y se
mostrará la ventana de Propiedades donde podrás hacer la
modificación. De igual manera el texto desplegado en los botones de
comando se modifica en su propiedad Caption.

Código para el botón Cancelar

El botón cancelar cerrará el formulario sin guardar la información


capturada en ningún lugar. El código que debemos utilizar es el
siguiente:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Para agregar este código puedes hacer doble clic sobre el control. La
sentencia “Unload Me” cerrará elformulario.

Código para el botón Aceptar

A diferencia del botón Cancelar, el botón Aceptar colocará los datos de


las cajas de texto en las celdas A1, B1 y C1. El código utilizado es el
siguiente:

Private Sub CommandButton1_Click()

Worksheets("Hoja1").Range("A1").Value = Me.TextBox1.Value

Worksheets("Hoja1").Range("B1").Value = Me.TextBox2.Value
Worksheets("Hoja1").Range("C1").Value = Me.TextBox3.Value

End Sub

Al pulsar el botón Aceptar se transferirán los valores de los


controles TextBox hacia las celdas de la Hoja1.

Botón para abrir formulario

Para facilitar la apertura del formulario puedes colocar un botón


ActiveX en la hoja con el siguiente código:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Probar el formulario

Observa cómo cada uno de los botones realiza la acción correcta al


pulsarlos:

Вам также может понравиться