Abra Excel y VBE (Editor de Visual Basic). A menos que se haya cambiado, la ventana VBE contiene la ventana ProjectExplorer y la ventana Properties (se puede acceder a estas desde el menú Ver).

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 (por ejemplo, Sheet1) del libro de trabajo actual (por ejemplo ,Book1).

En este artículo aprenderemos lo fácil que es grabar macros en Excel.

Ejercicio 1: Grabar 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 nuevo libro de trabajo, seleccione la celda C10 2. Inicie el Grabador de macros con la opción de guardar macro en Este libro de trabajo. En este punto, el VBE crea una nueva carpeta Modules. Es bastante seguro ir y mirarlo: sus acciones no se registrarán. Haga clic en [+] al lado de la carpeta y vea que el VBE ha colocado un módulo en la carpeta y lo nombró Module1. Haga doble clic en el icono del módulo para abrir su ventana de código. Regrese a Excel.

  2. Asegúrese de que el botón Referencia relativa en la barra de herramientas Detener grabación NO esté presionado.

  3. Seleccione la celda B5 y detenga la grabadora.

  4. Cambie al VBE y mire el código:

Rango («B5») Seleccione 6. Ahora grabe otra macro, exactamente de la misma manera, pero esta vez con el botón Referencia relativa presionado.

  1. 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 3×3 comenzando en B5 (seleccione las celdas B5: F7)

  1. Cambie al VBE y mire el código:

ActiveCell.Offset (-5, -1) .Range («A1: B3»). Seleccione 10. Reproduzca las macros, habiendo seleccionado primero una celda diferente a C10 (para Macro2 y Macro3, la celda inicial debe estar en la fila 6 o a continuación, 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.

  1. Ejecute Macro2 pero fuerce un error seleccionando una celda en la fila 5 o superior. La macro intenta seleccionar una celda que no existe 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. Presione Depurar para ir 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 botón Restablecer 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.

  1. 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, reanude el siguiente …​ inmediatamente arriba de la primera línea de la macro (debajo de la línea Sub Macro1 ()

  2. Ejecute Macro2 como antes, comenzando demasiado alto en la hoja. Esta vez el 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 para manejar errores con precaución. Esta es una macro muy simple. A 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.

  3. Modifique el código de Macro2 para incluir un manejador de errores más sofisticado así:

Sub Macro2 ()

En caso de error Ir a ErrorHandler ActiveCell.Offset (-5, -1) .Range («A1»). Seleccione Salir Sub ErrorHandler:

MsgBox «Debe iniciar 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 ExitSub hace que la macro finalice después de que haya hecho su trabajo; de lo contrario, el usuario verá el mensaje incluso si no hay ningún error.

Mejora de macros grabadas La buena forma 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 graban 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 elija Times New Roman y Red.

Vaya a Patrones y elija Amarillo.

Vaya a Alineación y elija Horizontal, Center Vaya a Number y elija Currency.

  1. Haga clic en Aceptar y detenga la grabadora.

  2. Haga clic en el botón Deshacer (o Ctrl + Z) para deshacer sus cambios en la hoja de trabajo.

  3. Seleccione un bloque de celdas y ejecute la macro FormatCells. ¡Tenga en cuenta que no se puede deshacer! Escriba las celdas para verificar el resultado del formateo.

  4. Mira el código:

Sub FormatSelection ()

Selection.NumberFormat = «$ , # 0.00″

With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False Finalizar con Selection.Font .Name = «Times New Roman»

Tamaño = 10 .Tachado = Falso .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 3 Terminar con Selection.Interior .ColorIndex = 6 .Pattern = xlSutolid .PatternColorInatic End With End Sub 8. Tenga en cuenta todas las instrucciones adicionales que se han grabado. Elimina líneas de código para que solo quede lo siguiente:

Sub FormatSelection ()

Selection.NumberFormat = «$ , # 0.00″

Con Selection .HorizontalAlignment = xlCenter Termina con With Selection.Font .Name = «Times New Roman»

ColorIndex = 3 Terminar con selección. Interior .ColorIndex = 6 Terminar con End Sub 9. Ejecute la macro para probar el código editado. Todavía funciona como antes.
  1. Ahora modifique el código aún más:

Sub FormatSelection ()

Con Selection .NumberFormat = «$ , # 0.00″

Font.ColorIndex = 3 .Interior.ColorIndex = 6 End With End Sub 11. Pruebe la macro. Todo sigue funcionando y el código se ejecutará mucho más rápido.
  1. Intente grabar la misma macro usando los botones de la barra de herramientas en lugar de ir al cuadro de diálogo:

Cambie la fuente a Times New Roman Cambie el color de la fuente a Rojo Cambie el color de relleno a Amarillo Haga clic en el botón Center Haga clic en el botón Currency 13. Observe el código. Todavía obtienes muchas cosas que no necesariamente quieres. Excel está registrando todas las configuraciones predeterminadas. La mayoría de estos son seguros para eliminar.

  1. Experimente con la edición 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. Vaya a Datos> Filtro> Autofiltro y filtre por Región o Mes. Está claro que Excel no hace las mismas suposiciones que el usuario. Las celdas vacías deben llenarse.

  1. Coloque en mosaico las ventanas de Excel y VBE (verticalmente) para que estén una al lado de la otra.

  2. Seleccione cualquier celda dentro de los datos. Si es una celda vacía, debe estar adyacente a una celda que contenga datos.

  3. Inicie la grabadora de macros y llame a la macro FillEmptyCells.

Establecer para registrar referencias relativas.

  1. En la ventana de VBE busque y haga doble clic en el módulo (Module1)

para que el libro de trabajo actual abra el panel de edición, luego apague la ventana Explorador de proyectos y la ventana Propiedades (solo para hacer espacio).

  1. Grabe la nueva macro de la siguiente manera:

Paso 1. Ctrl + * (para 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 = [Flecha arriba] y luego presione Ctrl + Entrar (para colocar su escritura en todas las celdas seleccionadas)

Paso 4. Ctrl + * (para seleccionar la región actual nuevamente)

Paso 5. Ctrl + C (para copiar la selección, cualquier método servirá)

Paso 6. Editar> Pegado especial> Valores> Aceptar (para pegar los datos nuevamente en el mismo lugar pero descartando las fórmulas)

Paso 7. Esc (para salir del modo de copia)

Paso 8. Detenga la grabación.

  1. Mira el código:

Sub FillEmptyCells ()

Selection.CurrentRegion.Select Selection.SpecialCells (xlCellTypeBlanks) .Select Selection.FormulaR1C1 = «= R [-1] C»

Selection.CurrentRegion.Select Selection.Copy Selection.PasteSpecial Paste: = xlValues, Operation: = xlNone, SkipBlanks: = _ False, Transpose: = False 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.

  1. Debido a que esta macro se ha grabado con comandos bien pensados, hay poco código innecesario. En Paste Special todo lo que sigue a la palabra «xlValues» se puede eliminar.

  2. Pruebe la macro. Luego use la herramienta Autofiltro y observe la diferencia.