Abra Excel y VBE (Editor de Visual Basic). A menos que se haya cambiado, la ventana VBE contiene la Explorador de proyectos ventana y el Propiedades ventana (se puede acceder a estos desde la Vista menú).
Explorador de proyectos: Funciona como un administrador de archivos. Le ayuda a navegar por el código en su libro de trabajo.
Ventana de propiedades: Muestra las propiedades del objeto actualmente activo (p. Ej. Hoja1) del libro de trabajo actual (p. ej.Libro 1).
En este artículo aprenderemos lo fácil que es grabar macros en Excel.
Ejercicio 1: Grabación de una macro.
Este ejercicio muestra lo que sucede cuando se graba una macro y demuestra la diferencia entre grabar referencias absolutas y relativas.
1. En una hoja de trabajo vacía en un libro nuevo, seleccione la celda C10
2. Inicie el Grabador de macros con opción para guardar macro en Este libro de trabajo. En este punto, el VBE crea un nuevo Módulos carpeta. Es bastante seguro ir y mirarlo: sus acciones no se registrarán. Haga clic en el [+] al lado de la carpeta y ver que el VBE ha colocado un módulo en la carpeta y lo nombró Módulo 1. Haga doble clic en el icono del módulo para abrir su ventana de código. Regrese a Excel.
3.Asegúrese de que Referencia relativa botón en el Para de grabar La barra de herramientas NO está presionada.
4. Seleccionar celda B5 y detenga la grabadora.
5. Cambie al VBE y mire el código:
Rango ("B5"). Seleccionar
6. Ahora grabe otra macro, exactamente de la misma manera, pero esta vez con la Referencia relativa botón presionado.
7. Cambie al VBE y mire el código:
ActiveCell.Offset (-5, -1) .Range ("A1"). Seleccione
8. Ahora grabe otra macro, pero en lugar de seleccionar la celda B5, seleccione un bloque de celdas 3x3 comenzando en B5 (seleccione las celdas B5: F7)
9. Cambie al VBE y mire el código:
ActiveCell.Offset (-5, -1) .Range ("A1: B3"). Seleccione
10. Reproduzca las macros, después de haber seleccionado primero una celda diferente a C10 (para Macro2 y Macro3, la celda inicial debe estar en la fila 6 o inferior; consulte el paso 11 a continuación).
Macro1 - siempre mueve la selección a B5
Macro2 - mueve la selección a una celda 5 filas hacia arriba y 1 columna a la izquierda de la celda seleccionada.
Macro3 - siempre selecciona un bloque de seis celdas comenzando 5 filas hacia arriba y 1 columna a la izquierda de la celda seleccionada.
11. Ejecute Macro2 pero fuerce un error seleccionando una celda en la fila 5 o superior. La macro intenta seleccionar una celda inexistente porque su código le dice que seleccione una celda 5 filas por encima del punto de inicio, y eso está fuera de la parte superior de la hoja. prensa Depurar para ser llevado a la parte de la macro que causó el problema.
NOTA: Cuando el VBE está en modo de depuración, la línea de código que causó el problema se resalta en amarillo. Debe "restablecer" la macro antes de poder continuar. Haga clic en el Reiniciar en la barra de herramientas de VBE o vaya a Ejecutar> Restablecer. El resaltado amarillo desaparece y el VBE sale del modo de depuración.
12. Es importante intentar anticipar errores de usuario como este. La forma más sencilla es modificar el código para simplemente ignorar los errores y pasar a la siguiente tarea. Haga esto agregando la línea …
En caso de error, reanudar siguiente
… inmediatamente encima de la primera línea de la macro (debajo de la línea Sub Macro1 ()
13. Ejecutar Macro2 como antes, comenzando demasiado alto en la hoja. Esta vez, la línea que escribió le dice a Excel que ignore la línea de código que no puede ejecutar. No hay mensaje de error y la macro sale después de haber hecho todo lo posible. Utilice este método de manejo de errores con precaución. Esta es una macro muy simple. Una macro más compleja probablemente no funcionaría como se esperaba si simplemente se ignoraran los errores. Además, el usuario no tiene idea de que algo salió mal.
14. Modifique el código de Macro2 para incluir un controlador de errores más sofisticado así:
Sub Macro2 ()
En caso de error Ir a ErrorHandler
ActiveCell.Offset (-5, -1) .Range ("A1"). Seleccione
Salir de Sub
ErrorHandler:
MsgBox "Debe comenzar debajo de la fila 5"
End Sub
15. Esta vez, se presenta al usuario un cuadro de diálogo cuando algo sale mal. Si no hay ningún error, la línea Exit Sub hace que la macro finalice después de que haya realizado su trabajo; de lo contrario, el usuario vería el mensaje incluso si no hubiera ningún error.
Mejora de macros grabadas
La buena manera de aprender los conceptos básicos de VBA es grabar una macro y ver cómo Excel escribe su propio código. Sin embargo, a menudo, las macros grabadas contienen mucho más código del necesario. Los siguientes ejercicios demuestran cómo se puede mejorar y simplificar el código producido por una macro grabada.
Ejercicio 2: mejora de macros grabadas
Este ejercicio muestra que cuando se registran macros, a menudo se genera más código del necesario. Demuestra el uso de la instrucción With para precisar el código.
1. Seleccione cualquier celda o bloque de celdas.
2. Inicie la grabadora de macros y llame a la macro FormatCells. La configuración de Referencias relativas no será relevante.
3. Vaya a Formato> Celdas> Fuente y elige Times New Roman y rojo.
Ir a Patrones y elige Amarillo.
Ir a Alineación y elige Horizontal, Centro
Ir a Número y elige Divisa.
4. Haga clic en OK y detenga la grabadora.
5. Haga clic en el Deshacer botón (o Ctrl + Z) para deshacer sus cambios en la hoja de trabajo.
6. Seleccione un bloque de celdas y ejecute el Formato de celdas macro. ¡Tenga en cuenta que no se puede deshacer! Escriba las celdas para verificar el resultado del formateo.
7. Mira el código:
Sub FormatSelection ()
Selection.NumberFormat = "$ #, ## 0.00"
Con selección
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = Falso
.Orientación = 0
.ShrinkToFit = Falso
.MergeCells = Falso
Terminar con
Con Selection.Font
.Name = "Times New Roman"
.FontStyle = "Regular"
.Tamaño = 10
.Strikethrough = Falso
.Superscript = Falso
.Subscript = Falso
.OutlineFont = Falso
.Shadow = Falso
.Underline = xlUnderlineStyleNone
.ColorIndex = 3
Terminar con
Con Selección Interior
.ColorIndex = 6
.Patrón = xlSólido
.PatternColorIndex = xlAutomatic
Terminar con
End Sub
Cambiar la fuente a Times New Roman
Cambiar el color de fuente a rojo
Cambiar el color de relleno a Amarillo
Haga clic en el Centrar botón
Haga clic en el Divisa botón
13. Mira el código. Todavía obtienes muchas cosas que no necesariamente quieres. Excel está grabando todos los defecto ajustes. La mayoría de estos se pueden eliminar de forma segura.
14. Experimente editando directamente en el código para cambiar los colores, la fuente, el formato numérico, etc.
Ejercicio 3: Observe cómo se graba una macro
Este ejercicio muestra que puede aprender observando la creación de la macro a medida que se graba. También es un ejemplo de cuando a veces la instrucción With no es apropiada.
1. Abra el archivo VBA01.xls.
Si bien esta hoja de trabajo es visualmente correcta y el usuario la puede entender, la presencia de celdas vacías puede causar problemas. Intente filtrar los datos y vea qué sucede. Ir a Datos> Filtro> Autofiltro y filtrar por región o mes. Está claro que Excel no hace las mismas suposiciones que el usuario. Las celdas vacías deben llenarse.
2. Coloque en mosaico las ventanas de Excel y VBE (verticalmente) para que estén una al lado de la otra.
3. Seleccione cualquier celda dentro de los datos. Si es una celda vacía, debe estar adyacente a una celda que contenga datos.
4. Inicie la grabadora de macros y llame a la macro. FillEmptyCells. Establecer para grabar Referencias relativas.
5. En la ventana VBE, busque y haga doble clic en el módulo (Módulo1) del libro de trabajo actual para abrir el panel de edición, luego apague la ventana Explorador de proyectos y la ventana Propiedades (solo para hacer espacio).
6. Grabe la nueva macro de la siguiente manera:
Paso 1. Ctrl + * (seleccionar la región actual)
Paso 2. Editar> Ir a> Especial> Espacios en blanco> Aceptar (para seleccionar todas las celdas vacías en la región actual)
Paso 3. Escriba = [UpArrow] entonces presione Ctrl + Entrar (colocar su escritura en todas las celdas seleccionadas)
Paso 4. Ctrl + * (volver a seleccionar la región actual)
Paso 5. Ctrl + C (para copiar la selección, cualquier método servirá)
Paso 6. Editar> Pegado especial> Valores> Aceptar (pegar los datos nuevamente en el mismo lugar pero descartando las fórmulas)
Paso 7. Esc (salir del modo de copia)
Paso 8. Detenga la grabación.
7. Mira el código:
Sub FillEmptyCells ()
Selection.CurrentRegion.Select
Selection.SpecialCells (xlCellTypeBlanks) .Select
Selection.FormulaR1C1 = "= R [-1] C"
Selection.CurrentRegion.Select
Selección. Copiar
Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _
Falso, Transponer: = Falso
Application.CutCopyMode = False
End Sub
8. Tenga en cuenta el uso del espacio y el subrayado “_” para indicar la división de una sola línea de código en una nueva línea. Sin esto, Excel trataría el código como dos declaraciones separadas.
9. Debido a que esta macro se ha grabado con comandos bien pensados, hay poco código innecesario. En el Pegado especial todo lo que sigue a la palabra "xlValues" se puede eliminar.
10. Pruebe la macro. Luego use la herramienta Autofiltro y observe la diferencia.