Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Como es sabido, el uso del programa Excel automatiza la carga de trabajo para la
creación de informes, sin embargo el empleo de macros en Excel mecaniza aún más
las tareas repetitivas que mediante las herramientas y fórmulas de Excel no se logra.
Por ejemplo, podemos crear una macro que me permita eliminar todos los gráficos que
se encuentran en una hoja de cálculo, esto solo se haría de forma manual, lo cual
demoraría cierto tiempo si es hay demasiadas formas, sin embargo si creamos una
macro que permita eliminar todo de uno se reduce el tiempo de manera considerable.
Cada reporte tiene su particularidad, depende del creador del archivo darle la apariencia
más atractiva para otros usuarios, esto con el propósito de generar un informe de fácil
comprensión y detalle. Por ejemplo, a través del visual basic el usuario puede crear
funciones específicas, así también crear tablas dinámicas a través de macros,
igualmente crear un catálogo de imágenes en Excel a través de visual basic, etc. En fin,
infinidad de elementos que se nos brinda para crear un reporte a la medida.
P á g i n a 1 | 54
¿Para qué sirve una Macro en Excel?
Las Macros en Excel son útiles entre otras cosas porque permiten la automatización
de tareas repetitivas, por ejemplo si se da cuenta que todos los días se encuentra
creando la misma tabla dinámica (pero con distintos datos), o colocando el mismo
formato a una hoja, entonces es el momento de automatizar dicha labor por medio de
Macros.
1.- Primero hacemos clic en el triángulo invertido en la parte superior izquierda del
documento de Excel para personalizar la barra de herramientas de acceso rápido.
P á g i n a 2 | 54
3.-Este nos llevará al cuadro de “Opciones de Excel” y ya en este damos click en la
sección “Personalizar cinta de opciones” y en ella activamos la opción
“Desarrollador” que esta desactivada por default:
P á g i n a 3 | 54
Finalmente podemos trabajar libremente y empezar a crear nuestras macros acorde con
nuestras necesidades.
P á g i n a 4 | 54
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:
P á g i n a 5 | 54
Nombre Ejemplo Descripción
del
botón
Etiqueta Identifica el propósito de una
celda o un cuadro de texto, o
muestra texto descriptivo (como
títulos, leyendas, imágenes) o
instrucciones breves.
P á g i n a 6 | 54
Nombre Ejemplo Descripción
del
botón
excepción de que un cuadro de
lista puede controlar un gran
número de elementos de
manera más eficiente.
Un cuadro de lista de selección
múltiple permite una elección o
elecciones contiguas
(adyacentes).
Un cuadro de lista de selección
extendida permite una elección,
elecciones y no contiguas, o
inconexas.
Controles ActiveX
Los controles ActiveX pueden usarse en formularios de hoja de cálculo, con o sin el uso
de código VBA, y en formularios del usuario de VBA. En general, use controles ActiveX
cuando necesite requisitos de diseño más flexibles que los proporcionados por los
P á g i n a 7 | 54
controles de formulario. Los controles ActiveX tienen amplias propiedades que puede
usar para personalizar su apariencia, comportamiento, fuentes y demás características.
También puede controlar los diversos eventos que se producen cuando se interactúa
con un control ActiveX. Por ejemplo, puede realizar diferentes acciones, según qué
opción seleccione el usuario en un control de cuadro de lista, o puede consultar una
base de datos para rellenar un cuadro combinado con elementos cuando el usuario hace
clic en un botón. También puede escribir macros que respondan a eventos asociados
con controles ActiveX. Cuando un usuario del formulario interactúa con el control, el
código de VBA se ejecuta para procesar cualquier evento que se produzca para dicho
control.
P á g i n a 8 | 54
Nombr Ejemplo Descripción
e del
botón
Cuadro de Muestra una lista de uno o más elementos de texto
lista de entre los cuales puede elegir el usuario. Use un
cuadro de lista para mostrar grandes cantidades de
opciones que varían en número o contenido. Existen
tres tipos de cuadros de lista:
P á g i n a 9 | 54
Nombr Ejemplo Descripción
e del
botón
Etiqueta Identifica el propósito de una celda o un cuadro de
texto, o muestra texto descriptivo (como títulos,
leyendas, imágenes) o breves instrucciones.
P á g i n a 10 | 54
¿Para qué sirve el editor de Visual Basic?
El editor de Visual Basic sirva para crear, ver y modificar las macros existentes. Esto
incluye a las macros que se han creado por medio del uso del grabador de macros, las
que se han escrito manualmente con el lenguaje de programación de VBA, y permite
verificar que cada línea de programación este correctamente escrita y cumpla su
función.
1. Barra de Menú: muestra las opciones clásicas como Archivo, Edición, Ver, etc, así
como las propias de Visual Basic como Depuración, Ejecutar y Complementos.
2. Barra de Herramientas: muestra opciones básicas para el uso habitual, como Guardar,
Cortar, Copiar, Pegar así como las propias del editor como Ejecutar, Interrumpir y
Restablecer Macro, Modo de Diseño, Explorador de Proyectos, Ventana de
Propiedades, Examinador de Objetos y Cuadro de Herramientas.
3. Explorador de Proyectos: permite observar los Libros de Excel Activos en el sistema,
así como el número de Hojas en cada uno de estos y los Módulos de programación
activos.
4. Ventana de Propiedades: muestra las características del objeto activo.
5. Ventana de Trabajo: es el área en donde se codifica la Macros, ya sea escribiendo
manualmente en ella el código de programación o usando del Grabador de Macros
desde la hoja de Excel activa.
P á g i n a 11 | 54
Paso 1: Click izquierdo en la flecha encerrada
“Visual Basic”.
P á g i n a 12 | 54
Ejercicio I Formulario
P á g i n a 13 | 54
Ejercicio II Formulario
Hoja Datos:
P á g i n a 14 | 54
Ejercicio III Formulario
Hoja Datos:
P á g i n a 15 | 54
Cómo grabar Macros en Excel
Si no tienes muchos conocimientos aún sobre VBA pero quieres automatizar algunas
tareas en Excel, puedes crear macros utilizando la Grabadora de macros, lo cual no
requerirá que tengas conocimiento de programación.
Existen dos maneras de iniciar con la grabación de una macro en Excel. Lo podemos
hacer desde la barra de estado y también desde la ficha Programador.
P á g i n a 16 | 54
Después de pulsar el botón Aceptar, todas las acciones que realices en Excel serán
guardadas como parte de la macro que está siendo grabada.
P á g i n a 17 | 54
Programador y dentro del cuadro de diálogo Macro elegir aquella macro que necesites
editar:
Al pulsar el botón Modificar se abrirá el Editor de Visual Basic con el código de la macro.
Debemos tener mucho cuidado con el código de una macro porque cualquier edición
incorrecta puede impedir el buen funcionamiento de la misma.
P á g i n a 18 | 54
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.
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.
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
P á g i n a 19 | 54
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.
Ejemplo
Para observar los códigos de una macro debemos seguir los pasos:
2. Presione el Botón Grabar Macro del grupo Código MS Excel muestra el cuadro de
Dialogo Grabar Macro:
5. En Guardar macro en: Seleccione en el lugar en donde desea guardar la macro, por
ejemplo Este libro.
P á g i n a 20 | 54
6. En Descripción puede agregar una descripción de lo que hace la macro, este punto
es opcional. Solo le sirve para que usted recuerde acerca de lo que hace la macro, pues
este código no es interpretado por el compilador.
10. Para visualizar el código generado, presione la tecla Alt + la tecla de función F11
(Alt + F11), o de un clic derecho en la hoja de cálculo:
11. Seleccione la opción Ver código. También puede acceder al grupo Código, al dar
clic en la opción Visual Basic
P á g i n a 21 | 54
13. Active los siguientes cuadros o ventanas:
14. Del cuadro Proyecto de doble clic en Módulos o simplemente presione el signo de
+ que aparece en la opción Módulos. Se activara debajo de Módulos la Opción
Modulo1.
• Sub y End Sub indican el inicio y el final del procedimiento de la macro saludo
• Todo lo que aparece con un apóstrofe ´ indica que no se tomara en cuenta que
es solo texto o comentarios y ese texto aparece en color verde.
P á g i n a 22 | 54
17. Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s
hará lo siguiente:
Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará
Se visualiza:
Al alterar el código y cuando regrese a Excel y ejecute la macro con Control + s hará:
P á g i n a 23 | 54
Adicionar un botón en la hoja Excel para ejecutar la macro
Practica
Genera las siguientes Macros:
Grabe una Macro que se active con Control + b y que esta macro permita abrir
un archivo.
P á g i n a 24 | 54
Códigos más Comunes
Range("A1").Select
Activecell.FormulaR1C1="Paty Acosta"
Letra Negrita
Selection.Font.Bold = True
Letra Cursiva
Selection.Font.Italic = True
Letra Subrayada
Selection.Font.Underline = xlUnderlineStyleSingle
Centrar Texto
Alinear a la izquierda
Alinear a la Derecha
With Selection
.HorizontalAlignment = xlRight
End With
Tipo de Letra(Fuente)
.Name = "AGaramond"
End With
Copiar
Selection.Copy
P á g i n a 25 | 54
Pegar
ActiveSheet.Paste
Cortar
Selection.Cut
Ordenar Ascendente
Orden Descendente
Buscar
Insertar Fila
Selection.EntireRow.Insert
Eliminar Fila
Selection.EntireRow.Delete
Insertar Columna
Selection.EntireColumn.Insert
Eliminar Columna
Selection.EntireColumn.Delete
Abrir un Libro
Grabar un Libro
P á g i n a 26 | 54
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.
P á g i n a 27 | 54
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.
Para agregar este código puedes hacer doble clic sobre el control. La sentencia “Unload
Me” cerrará el formulario.
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.
P á g i n a 28 | 54
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:
Probar el Formulario
Observa cómo cada uno de los botones realiza la acción correcta al pulsarlos:
Name.
Caption.
Accelerator.
Value.
Enabled.
Visible.
TabIndex.
Height.
Width.
P á g i n a 29 | 54
Propiedad Name
Esta propiedad nos permite identificar a los controles para poder manipularlos
desde VBA. Cada control tiene un nombre predefinido, como por ejemplo un Cuadro
de texto tendrá el nombre TextBox1, pero nosotros lo podemos cambiar
a txtNombre o el nombre que deseemos, aunque se sugiere que sea descriptivo acerca
de la función que tendrá el control.
MsgBox Me.txtNombre.Value
End Sub
Propiedad Caption
Con esta propiedad haremos referencia al título o etiqueta que tendrá un Control.
Desde un UserForm, pasando por un TextBox, la mayoría de los controles tienen
un Caption, que será el texto que se mostrará en cada Control.
P á g i n a 30 | 54
Figura 2. Propiedad Caption en UserForm VBA.
Me.Caption = "EXCEL_AVANZADO"
End Sub
Propiedad Accelerator
Usaremos la propiedad Accelerator cuando deseemos activar un Control o ejecutar
un procedimiento que tenga asociado a su evento Click. Si por ejemplo tenemos un
botón con el Caption “Prueba” y le asignamos la letra P como tecla aceleradora,
cada que presionemos en nuestro teclado la combinación Alt + P, se activará o
ejecutará una macro asociada a ese control.
Noten en la siguiente imagen que la letra P se subraya para identificar la letra
aceleradora.
P á g i n a 31 | 54
Propiedad Value
Algunos Controles permiten guardar valores, como por ejemplo TextBox o
ComboBox. La propiedad Value nos permitirá guardar un valor para después volcarlo
en alguna celda, otro Control o usarlo para algún cálculo.
Por ejemplo, los valores de un CheckBox son TRUE o FALSE.
Propiedad Enabled
En ocasiones vamos a necesitar inhabilitar controles, en base al contenido de otro
control o como medida validación para seguir pasos al capturar valores. Para lo anterior,
usaremos la propiedad Enabled, que será TRUE en caso de que
deseemos habilitar un Control o FALSE para inhabilitarlo.
Propiedad Visible
Con esta propiedad tendremos controles ocultos y mostrarlos en base a una
condición. Si Visible es TRUE el control se muestra y con FALSE se oculta.
P á g i n a 32 | 54
Figura 5. Propiedad Visible para mostrar controles en Formulario VBA.
End Sub
Propiedad TabIndex
La propiedad TabIndex nos ayudará a tener un orden de activación de controles, es
decir, al presionar la tecla Tabulador iremos activando o dándole foco a los
controles. El índice menor es 0 y el mayor dependerá de los controles que
tengamos en el Formulario.
Propiedad Height
Con esta propiedad vamos a modificar y manipular el alto de un Formulario o un
Control.
Propiedad Width
Con esta propiedad vamos a modificar y manipular el ancho de un Formulario o
Control.
P á g i n a 33 | 54
Tipos de variables en VBA
En VBA existen una gran cantidad de variables. Aquí repasaremos los principales tipos
y su alcance.
Tipo Entero
Para una variable numérica de valores de -32768 a 32767.
Para ello usaremos el código
Si tenemos almacenado un valor con algún tipo de variable que no sea de tipo Integer
podremos convertirlo a Integer mediante el comando CInt. En la siguiente línea podemos
ver el uso de este comando con un ejemplo sencillo.
Sub Convertir_a_integer()
n = 9.56
MsgBox CInt(n)
End Sub
Tipo Long
El tipo long de variable es para valores enteros positivos o negativos pero con la
diferencia de que puede almacenar valores mucho mayores, en concreto entre -
2.147.483.648 y 2.147.483.648. La sintaxis de este tipo de variables es:
Sub Convertir_a_Long()
n = 100000000.53
MsgBox CLng(n)
End Sub
Tipo Single
Para almacenar valores numéricos decimales aunque si requerimos una mayor
precisión, usaremos variables tipo Double.
El código para declarar variables tipo Single es:
P á g i n a 34 | 54
Si, como en los casos anteriores, queremos convertir una variable a tipo Single
usaremos el método CSng() como vemos en el siguiente ejemplo:
Sub Convertir_a_Single()
n = 120.534253231
MsgBox CSng(n)
End Sub
Tipo String
Para almacenar valores de cadenas de texto, es decir, uniones de cualquier tipo de
caracter ya sea numérico o no numérico.
El código para declarar este tipo de variables es:
Para asignar el valor a este tipo de variables deberemos poner la cadena de texto (o de
los caracteres que sean) entre comillas como puede verse en el siguiente ejemplo:
Sub Ejemplo()
Dim Nombre_pais As String
Nombre_pais= "Brasil"
End Sub
Sub Convertir_a_String()
Dim st As String
n = 53
st = CStr(n)
End Sub
El resultado del código anterior guardará en la variable st el valor de 53 como tipo String.
Tipo Variant
Este tipo nos permite almacenar cualquier tipo de información ya sea numérica, de texto
o del tipo verdadero o falso o cualquier otro que se nos ocurra. En definitiva, cuando no
sabemos qué tipo de variable va a tener usaremos el tipo Variant, donde entran todos
los tipos posibles. El inconveniente es que ocupa una gran cantidad de memoria.
El código para su declaración es:
P á g i n a 35 | 54