¿cómo insertar columnas usando vba?
En este tutorial, veremos cómo insertar una columna usando código VBA en Excel. También exploraremos cuáles son las diferentes formas de escribir una macro para esto.
Insertar una sola columna usando VBA
Para insertar una columna usando código VBA, debe usar la propiedad «Columna completa» con el método «Insertar». Con la propiedad de columna completa, puede hacer referencia a toda la columna usando una celda y luego insertar una nueva columna. De forma predeterminada, insertará una columna antes de la celda que mencionaste.
- Primero, especifique una celda usando el objeto de rango.
- Ahora ingrese un punto (.) para obtener la lista de propiedades y métodos.
- Después de eso, seleccione la propiedad «Columna completa» o escríbala.
- Al final, ingrese un punto (.) nuevamente y seleccione el método “Insertar” o escríbalo.
Range("A1").EntireColumn.Insert
Su código está listo aquí para insertar una columna. Ahora, cuando ejecuta este código, inserta instantáneamente una nueva columna antes de la columna A.
Insertar varias columnas
Hay dos formas de insertar varias columnas en una hoja de cálculo que he encontrado. El primero es el mismo método de inserción que utilizamos en el ejemplo anterior. Con esto, debe especificar un rango de columnas cuyo número sea igual al número de la columna que desea insertar.
Ahora suponga que desea insertar 5 columnas después de la columna C en caso de que pueda usar un código como este.
Range("C:G").EntireColumn.Insert
Para ser honesto, no encontré este método muy útil porque tienes que cambiar el rango si quieres cambiar el código en sí. Entonces, aquí está el segundo método.
'variables to use in the code Dim iCol As Long Dim iCount As Long Dim i As Long 'to get the number of columns that you want to insert with an input box iCount = InputBox(Prompt:="How many column you want to add?") 'to get the column number where you want to insert the new column iCol = InputBox _ (Prompt:= _ "After which column you want to add new column? (Enter the column number)") 'loop to insert new column(s) For i = 1 To iCount Columns(iCol).EntireColumn.Insert Next i
Cuando ejecuta este código, le pide que ingrese la cantidad de columnas que desea agregar y luego el número de columna donde desea agregar todas estas columnas nuevas. Utiliza un bucle FOR (For Next) para ingresar la cantidad de columnas que mencionaste.
Insertar columnas basadas en valores de celda
Si desea insertar columnas basadas en un valor de celda, puede utilizar el siguiente código.
Dim iCol As Long Dim iCount As Long Dim i As Long iCount = Range("A1").Value iCol = Range("B1").Value For i = 1 To iCount Columns(iCol).EntireColumn.Insert Next i
Cuando ejecuta esta macro, toma la cantidad de columnas de la celda A1 y la columna a la que desea agregar columnas de la celda B1.
Insertar una columna sin formato
Cuando inserta una columna donde la columna de arriba tiene un formato específico, en ese caso la columna también tendrá ese formato automáticamente. Y la forma más sencilla de gestionar esta situación es utilizar formatos claros. Considere el siguiente código.
Columns(7).EntireColumn.Insert Columns(7).ClearFormats
Cuando ejecuta el código anterior, inserta una nueva columna antes de la séptima columna. Ahora, lo que sucede es que cuando inserta una columna antes de la séptima columna, esta nueva columna se convierte en la séptima columna, luego la segunda línea de código borra los formatos.
Insertar una columna copiada
También puedes utilizar el mismo método para copiar una columna y luego insertarla en otro lugar. Vea el siguiente código.
Application.CutCopyMode = False With Worksheets("Data") .Columns(5).Copy .Columns(9).Insert Shift:=xlShiftDown End With Application.CutCopyMode = True