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

Escrito por Administrador

18 de septiembre de 2021

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

1. Insertar 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 utilizando macros, 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, con este ejemplo, qué fácil es insertar y eliminar filas y columnas usando macros.

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

 

Macro 1. Insertar una fila.

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. Insertar dos columnas.

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. Eliminar una columna.

Sub Leccion8_3()

'Macro que elimina la columna B

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

End Sub

Macro 4. Eliminar dos filas.

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. Restaurar la configuración inicial de la página.

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

Seguidamente, 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, en la que has aprendido a insertar y eliminar filas y columnas usando macros.

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 el formato de una celda con macros.

L9. Combinar celdas con macros. »

Por favor, ayúdame y haz clic en el anuncio 😉



0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.

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

Quizá te interese,

Contacto