Hola a todos 🙂
Hace pocos días que publiqué mi último post pero hoy aprovecho que tengo algo de tiempo para escribir uno nuevo.
Será un post muy breve dado que se trata de la modificación del código de un post anterior: INSERTAR FILAS INTERCALADAS EN BLANCO EN EXCEL
Y el motivo de la modificación del código es una consulta recibida en la que me preguntaban «buenísimo! y si quiero que lo haga a nivel celda en una sola columna? =)»
Pues es relativamente sencillo, dado que en el código anterior insertábamos filas en blanco, en esta versión insertaremos celdas en blanco en la columna seleccionada.
Siguiendo con el ejemplo, tenemos la siguiente tabla:
Y lo que vamos a hacer es intercalar una celda en blanco en las columnas de «Jueves» y «Sábado». Para ello, vamos a utilizar
Sub Insertar_celdas()
'Definimos variables
Dim tTop, rFila, i, j As Double
'Buscamos el número de columna en el que estamos
nColum = ActiveCell.Column
'Buscamos la letra de la columna en la que estamos
lColum = Split(ActiveCell.Address, "$")(1)
'Determinamos el rango para definir la longitud del bucle for-next
Rango = lColum & ":" & lColum
'Indicamos el número de línea sobre el que comenzamos a añadir celdas en blanco
tTop = 3
'Indicamos el número de celdas en blanco a incluir
rFila = 1
fin = Application.CountA(ActiveSheet.Range(Rango))
For j = 2 To fin
'Si la primera celda (en este caso la 3) contiene un valor,
'entonces comenzamos a insertar celdas intercaladas
If Not IsEmpty(Cells(tTop, nColum)) Then
For i = 1 To rFila
Cells(tTop, nColum).Insert Shift:=xlDown
Next i
tTop = tTop + rFila + 1
End If
Next j
End Sub
Para acabar, en el ejemplo que os dejo, he utilizado, al igual que en la entrada anterior, otra macro para activar esta macro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.OnKey "{ESCAPE}", "Insertar_celdas"
End Sub
La macro se activa pulsando la tecla “Escape”. Pero podéis ejecutarla perfectamente vinculándola a un botón o ejecutándola directamente sobre el código.
Es decir, os posicionáis con el cursor encima de la columna «E» (Jueves) y pulsáis la tecla «Esc» y hacéis lo mismo con la columna «G» (Sábado).
El resultado es el siguiente:
Y ya está, como habéis podido observar, solo hemos cambiado la línea de código que insertaba filas vacías por esta otra:
Cells(tTop, nColum).Insert Shift:=xlDown
Y eso es todo, una pequeña modificación en la macro y obtenemos lo que necesitamos 🙂
Dado que estoy utilizando una macro que usa la combinación de teclas para activar la macro principal, a la hora de descargar el archivo os generará un error en tiempo de ejecución del método On Key. Este se puede corregir usando On Error Resume Next:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Application.OnKey "{ESCAPE}", "Insertar_celdas"
On Error GoTo 0
End Sub
Pero no tiene mucho sentido dado que solo os ocurrirá cuando descarguéis el archivo, de todas formas os lo comento para vuestra información.
Una vez guardado, no se volverá a reproducir este error. O, como ya dije, podéis ejecutarlo vinculándolo a un botón o cualquier otro evento.
Descarga el archivo de ejemplo pulsando en: INSERTAR CELDAS INTERCALADAS EN BLANCO EN EXCEL
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!