Modificación de macro que suprime filas según condición

Para Dante Amor.

Tengo una macro que elimina las filas en que se cumple una condición que es columna "F" = 1. El problema estriba en que una vez ejecutada la macro siguen dándose nuevos ingresos de filas que en ciertos casos en columna "F" no es igual a 1 y deberían mostrarse y la única forma de que se visualicen es "mostrando de nuevo las filas ocultas mediante click derecho del mouse" y ejecutando de nuevo la macro.

Me gustaría que la macro se siguiera ejecutando de forma constante con los nuevos ingresos y no tener que ir a visualizar filas ocultas con click del mouse y repetir ejecución de macro como hasta ahora

Sub eliminarfilas()
Dim rngString As Range
Do
Set rngString = Columns("F").Find("1", MatchCase:=False, LookAt:=xlPart, LookIn:=xlValues)
If Not rngString Is Nothing Then
rngString.EntireRow.Hidden = True
End If
Loop Until rngString Is Nothing
End Sub

1 Respuesta

Respuesta
1

H o l a:

Para adecuar la macro a lo que realmente necesitas, explícame, en qué momento quieres que se ejecute la macro para ejecutar las filas, es decir, estás capturando información, llegas a la columna "F" escribes el número 1, en ese momento quieres que en automático se oculte la fila.

O quieres seguir presionando un botón, ¿qué revise todas las filas y solamente oculte las que son iguales a 1?

La macro que tienes oculta las filas si tienes un 1 o si tienes un 21 o si tienes un 4441, siempre que aparezca un 1 en la celda, va a ocultar la fila, eso quieres que siga haciendo, ¿o solamente cuando es igual a 1?

La macro opera como te decía sobre la columna "F" donde tiene una fórmula que es =SI(E5>0;1;0) y así en todas las celdas de "F", =SI(E6>0;1;0),... y en columna "E" tiene la siguiente fórmula  =COINCIDIR(D5;SAVETICKETS!$V$2:$V$212;0) de forma que cuando encuentra coincidencia aparece un número >0, por lo que en "F" aparecerá un 1 y cuando no da como resultado #N/A. Esto sucede con cambios constantes por la entrada de nuevos ingresos de nuevas líneas. Hasta ahora la ejecución la efectúa sobre las líneas que haya (ej.7) y discrimina ocultando aquellas que tienen el 1 pero cuando entra nueva línea que por ejemplo deba ser visualizada no la veo y he de ir a la opción "mostrar" del botón derecho del mouse y después de visualizar todas las líneas volver a ejecutar la macro

H o l a:

Ya entendí, entonces cambiando valores de otras columnas la columna F puede tener 1 ó 0 (uno o cero), ¿correcto?

Con la siguiente macro se ocultaran solamente las filas que tengan 1.

Pon la macro en los eventos de tu hoja

Private Sub Worksheet_Calculate()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    For i = 1 To ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
        If Cells(i, "F") = 1 Then
            Rows(i).EntireRow.Hidden = True
        Else
            Rows(i).EntireRow.Hidden = False
        End If
    Next
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
  4. Del lado derecho copia la macro

Probé la macro con 3,000 registros y funciona bien.

S a l u d o s

Me sale un mensaje "Se ha producido un error "13" en tiempo de ejecución: No coinciden los tipos.

No se ejecuta de forma automática tampoco

¿En qué línea de la macro se detiene?

Si la macro está intentando ocultar filas, pero se detienen por un error, significa que si se está ejecutando en automático, pero tienes un problema en tu hoja, tal vez la tienes protegida, no lo sé.

Si la macro se detuvo por un error, tienes que ejecutar la siguiente macro para que se activen los eventos:

Sub en()
Application.EnableEvents = True
End Sub

Ejecuta la macro anterior solamente una vez.

¿Dime qué tienes en tu hoja que no se pueden ocultar las hojas?

Si sigue sin funcionar, envíame tu archivo con la macro para revisar tu hoja.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas