Lección 8: Agregar/eliminar filas y columnas automáticamente con macros.

Escrito por Administrador

20 de agosto de 2021

En esta lección, vas a aprender los comandos para añadir y eliminar filas y columnas de manera automática a tus hojas Excel. ¡Comenzamos!

1. Agregar filas y columnas.

Muchas veces nos encontramos con la necesidad de insertar filas (o eliminarlas) en función de un valor o cálculo. Hoy vamos a ver los comandos para hacerlo de forma automática, y más adelante, cuando veamos los condicionales, los asociaremos a una condición.

Para insertar una sola fila en una posición determinada, por ejemplo, en la fila 2, usaremos:

Cells(2,1).EntireRow.Insert

Basta con apuntar a la fila 2, es decir, da igual el valor que le demos a la columna. Por tanto, con el comando

Cells(2,9).EntireRow.Insert

obtendríamos el mismo resultado.

Para insertar una sola columna en una posición determinada, por ejemplo, en la columna B, usaremos:

Cells(1,2).EntireColumn.Insert

Basta con apuntar a la columna B, es decir, da igual el valor que le demos a la fila. Por tanto, con el comando

Cells(9,2).EntireColumn.Insert

obtendríamos el mismo resultado.

Si lo que queremos es insertar un rango de filas o columnas, usaremos:

Range("A2:A4").EntireRow.Insert

Insertaría filas nuevas entre A2 y A4, es decir, 3 filas.

Mientras que,

Range("A2:D2").EntireColumn.Insert

insertaría columnas nuevas entre A2 y D2, es decir, 4 columnas.

2. Eliminar filas y columnas

Para eliminar una sola fila de una posición determinada, por ejemplo, la fila 2, usaremos:

Cells(2,1).EntireRow.Delete

Basta con apuntar a la fila 2, como veíamos más arriba.

Para eliminar una sola columna de una posición determinada, por ejemplo, la columna B, usaremos:

Cells(2,1).EntireColumn.Delete

Basta con apuntar a la columna B, como veíamos más arriba.

Si lo que queremos es eliminar un rango de filas o columnas, usaremos:

Range("A2:A4").EntireRow.Delete

Elimina las filas 2, 3 y 4.

Range("A2:D2").EntireColumn.Delete

Elimina las columnas A, B, C y D.

Vas a ver qué fácil es la automatización de la inserción y eliminación de filas y columnas con este ejemplo.

Crea un nuevo libro Excel, abre el editor VBA, inserta 5 módulos y copia las siguientes macros en ellos.

Macro 1

Sub Leccion8_1()

'Macro que inserta una fila en la posición 5 y asigna el contenido "Malaga" a la celda A5

Cells(5, 1).EntireRow.Insert                      'Insertamos una fila nueva en la posición 5

Cells(5, 1).Value = "Malaga"                     'Asignamos el valor "Malaga" a la celda A5

Cells(2, 1).Copy                                        'Copiamos la celda A2 "Barcelona"

Range("A5").Select                                    'Seleccionamos la celda A5 "Malaga"

'Aplicamos el formato de A2 a A5

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False     

Application.CutCopyMode = False            'Desactivamos el comando copiar

End Sub

Macro 2

Sub Leccion8_2()

'Macro que inserta 2 columnas entre B y C, y asigna el contenido "Cafeteria" a B1 y "Aeropuerto" a C1

Range("C1:D1").EntireColumn.Insert            'Insertamos 2 columnas entre C y D

Cells(1, "C").Value = "Cafeteria"                    'Asignamos el valor "Cafeteria" a la celda C1

Cells(1, "D").Value = "Aeropuerto"                 'Asignamos el valor Aeropuerto a la celda D1

Cells(1, 2).Copy                                            'Copiamos la celda B1 "Restaurante"

Range("C1:D1").Select                                  'Seleccionamos las celdas C1 "Cafeteria" y D1 "Aeropuerto"

'Aplicamos el formato de B1 a C1 Y D1

Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False     

Application.CutCopyMode = False                'Desactivamos el comando copiar

End Sub

Macro 3

Sub Leccion8_3()

'Macro que elimina la columna B

Cells(1, 2).EntireColumn.Delete                     'Eliminamos la columna B

End Sub

Macro 4

Sub Leccion8_4()

'Macro que elimina las filas 3 y 4

Range("A3:A4").EntireRow.Delete                    'Borramos las filas 3 y 4

End Sub

Macro 5

Sub Leccion8_5()

'Macro que restaura la configuración inicial de la página

Application.ScreenUpdating = False                         'Desactivamos el refresco de pantalla

Range("A1:AA100").ClearContents                             'Borramos el contenido de las celdas del rango A1-AA100

Cells(2, "A").Value = "Barcelona"                                 'Asignamos a la celda A2 el valor "Barcelona"

Cells(3, "A").Value = "Madrid"                                      'Asignamos a la celda A3 el valor "Madrid"

Cells(4, "A").Value = "Sevilla"                                      'Asignamos a la celda A4 el valor "Sevilla"

Cells(5, "A").Value = "Bilbao"                                       'Asignamos a la celda A5 el valor "Bilbao"

Cells(6, "A").Value = "Valencia"                                   'Asignamos a la celda A6 el valor "Valencia"

Range("A2:A6").Font.ColorIndex = 3                           'Asignamos color rojo al texto del rango A2-A6

Range("A2:A6").HorizontalAlignment = xlCenter        'Alineamos horizontalmente el texto del rango A2-A6

Cells(1, "B").Value = "Restaurante"                             'Asignamos a la celda B1 el valor "Restaurante"

Cells(1, "C").Value = "Museo"                                      'Asignamos a la celda C1 el valor "Museo"

Cells(1, "D").Value = "Salon Congresos"                      'Asignamos a la celda D1 el valor "Salon Congresos"

Cells(1, "E").Value = "Hotel"                                        'Asignamos a la celda E1 el valor "Hotel"

Cells(1, "F").Value = "Parque"                                     'Asignamos a la celda F1 el valor "Parque"

Range("B1:F1").Font.ColorIndex = 10                         'Asignamos color verde al texto del rango B1-F1

Range("B1:F1").HorizontalAlignment = xlCenter        'Alineamos horizontalmente el texto del rango B1-F1

Range("B2:B5").Value = "X"                                         'Asignamos al rango de celdas B2-B5 el valor "X"

Range("C3:C4").Value = "X"                                         'Asignamos al rango de celdas C3-C4 el valor "X"

Cells(6, 3).Value = "X"                                                'Asignamos a la celda C6 el valor "X"

Range("D2:F2").Value = "X"                                         'Asignamos al rango de celdas D2-F2 el valor "X"

Cells(3, "F").Value = "X"                                              'Asignamos a la celda F3 el valor "X"

Range("D5:E5").Value = "X"                                        'Asignamos al rango de celdas D5-E5 el valor "X"

Cells(6, "F").Value = "X"                                              'Asignamos a la celda F6 el valor "X"

Range("B2:F6").HorizontalAlignment = xlCenter       'Alineamos horizontalmente el texto del rango B2-F6

Application.ScreenUpdating = True                          'Activamos el refresco de pantalla

End Sub

Rellena la hoja con los valores que se muestran a continuación y crea cinco botones asociados a las cinco macros que acabamos de copiar. Debería quedarte algo así:

total-operaciones-matematicas-macros

Al ejecutar la primera macro, vemos como se añade una nueva fila en la posición 5, y se le asigna el valor “Malaga” a la celda A5. Si te fijas en el código, también restablecemos el formato de celda, copiándolo de otra.

total-operaciones-matematicas-macros

Con la segunda macro, se añaden automáticamente dos nuevas columnas en las posiciones C y D, y se le asigna a la celda C1 el valor “Cafetería” y a la celda D1 el valor “Aeropuerto”. También aquí restablecemos el formato de la celda, copiándolo de otra.

total-operaciones-matematicas-macros

La tercera macro elimina la columna B.

total-operaciones-matematicas-macros

La cuarta macro elimina las filas 3 y 4.

total-operaciones-matematicas-macros

Con la quinta macro restablecemos la hoja con los valores iniciales.

En esta macro he utilizado dos formas diferentes de asignar valores a celdas, y también he aprovechado para refrescar lo aprendido en la Lección 7 sobre cómo automatizar los cambios de atributos de formato en celdas.

Con esto llegamos al final de la octava lección. Espero que te esté gustando el curso y que me plantees cualquier duda que te surja. También puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L7. Automatizar los atributos de una celda con macros.

L9. Combinar celdas con macros. »

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto