Tengo una lista desplegable en la celda D3. Una vez que cambia D3, los valores de las filas cambian, algunos con números por encima o por debajo de 0 y otros permanecen en un 0 agudo en la columna I. Necesito una macro que se repetirá y el resultado debería ser que cuando cambie D3, toda la información con el valor exacto de 0 en La columna I estará oculta, PERO cuando cambie D3 nuevamente, se restablecerá y nuevamente ocultará todas las filas que incluyen un 0 en la columna I.
Respuesta1
Para activar una macro con cambios en una hoja, puede colocar un suben la hoja de trabajo usando el
evento Worskheet.Change:Private Sub Worksheet_Change(ByVal Target As Range)
Para realizar un bucle en la columna "I", hay algunas formas de hacerlo. Podemos definir el rango y hacer un For each
bucle, o podemos usar un iterable.
Para evitar bucles en toda la columna, podemos encontrar la última fila de uso de la columna de varias maneras diferentes, Cells(Rows.Count, 9).End(xlUp).Row
esta es una de ellas.
Verificar el valor de la celda en el bucle es bastante sencillo y para ocultar la fila, podemos usarRange.EntireRow.Hidden = True
Todo podría verse así:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim hide As Boolean, i As Long
'Intersect validates that the change is only happening in "D3" to be valid
If Not Intersect(Target, Range("D3")) Is Nothing And Target.Count = 1 Then
' i = starting range - to - last row
For i = 4 To Cells(Rows.Count, 9).End(xlUp).Row
hide = False
If Cells(i, 9).Value = "0" Then hide = True
Cells(i, 9).EntireRow.Hidden = hide
Next i
End If
End Sub