
Pude crear casillas de verificación para mostrar/ocultar filas específicas en mi documento de Excel usando el siguiente código
If CheckBox1.Value = True Then Rows("26:28").EntireRow.Hidden = False If CheckBox1.Value = False Then Rows("26:28").EntireRow.Hidden = True
Sin embargo, necesito poder actualizar el rango cuando inserto filas por encima de este rango.
Estaba tratando de encontrar la celda en la que comienza el rango y luego agregando 2 al rango, pero no estoy seguro de cómo hacerlo.
Salud
Roberto
Respuesta1
El seguimiento y la gestión de la adición/eliminación de filas puede ser extremadamente difícil (asegúrese de capturarlo siempre, también debe modificar el código en sí para el nuevo número de fila o almacenarlo en algún lugar de una hoja...), sugiero usar alguna solución.
Utilice un rango con nombre: los rangos con nombre se desplazan junto con las celdas, por lo que hacer referencia a ellos siempre hará referencia a las mismas celdas.
- En el siguiente ejemplo, A6:A7 es un rango con nombre y el código de muestra lo muestra/oculta.
- Otra opción podría ser buscar información específica en la hoja de cálculo y realizar acciones en función de eso, sin embargo, nuevamente es bastante complejo.
Respuesta2
Asumiré que tiene un código funcional para mostrar/ocultar esas líneas, y que su problema es solo encontrar la línea después de insertar las líneas anteriores.
Si solo tiene un rango para mostrar/ocultar, puede usar un rango con nombre. Cuando haya nuevas líneas arriba, el rango nombrado seguirá apuntando a las mismas líneas.
Simplemente asigne un nombre (p. ej. ToBeHidden
) a algunas celdas (p. ej. A26:A28
, no es necesario nombrar todas las líneas) y use este código para alternarlas:
With ActiveSheet.Range("ToBeHidden").EntireRow
If .Hidden = True Then
.Hidden = False
Else
.Hidden = True
End If
End With
Es fácil alternar con un conjunto de líneas, pero si tienes muchas, necesitarás algo más potente. Quizás agregue una columna dedicada para activar esta función.
Respuesta3
Dado que el objetivo del OP es "detectar si se insertan filas y cuántas", que puede encontrar en los comentarios anteriores de Máté Juhász, la solución debe rastrear el rango de datos ocultos para las filas insertadas o eliminadas.
Primero, asigne un nombre al rango oculto A26:A28
y use el siguiente código VBA para realizar un seguimiento del número de filas insertadas o eliminadas.
Private Sub Worksheet_Change(ByVal Target As Range)
Static lngRow As Long
Dim rng1 As Range
Set rng1 = ThisWorkbook.Names("Named Range").RefersToRange
If lngRow = 0 Then
lngRow = rng1.Row
Exit Sub
End If
If rng1.Row = lngRow Then Exit Sub
If rng1.Row < lngRow Then
MsgBox lngRow - rng1.Row & " Row Deleted"
Else
MsgBox rng1.Row - lngRow & " Rows Inserted"
End If
lngRow = rng1.Row
End Sub
Nota: Si solo desea contar las filas insertadas, cambie la última If...
a
If rng1.Row > lngRow Then
MsgBox rng1.Row - lngRow & " Rows Inserted"
End If