Uso de la grabadora de macros en Microsoft Excel

Tabla de contenido

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.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave