![VBA Excel 2007 ayuda a acelerar el código para ocultar filas](https://rvso.com/image/1395375/VBA%20Excel%202007%20ayuda%20a%20acelerar%20el%20c%C3%B3digo%20para%20ocultar%20filas%20.png)
Estoy intentando escribir un código VBA que oculte automáticamente las filas si un valor en la fila es igual a "". Mi rango de valores es A37:A400. Debido a que mi rango es tan grande, mi VbA anterior es demasiado lento y se ve una línea a la vez. ¿Alguna idea para crear un código rápido que revise esta gran lista y oculte filas rápidamente? En este momento, se tarda aproximadamente un minuto en ocultar las filas, lo cual es demasiado largo.
Sub HideRows()
Dim cell As Range
For Each cell In Range("A37:A400")
If Not IsEmpty(cell) Then
If cell.Value = "" Then
cell.EntireRow.Hidden = True
End If
End If
Next
End Sub
Respuesta1
Intente agregar Application.ScreenUpdating = False
justo antes de su código de ocultación y agregue Application.ScreenUpdating = True
después de su código de ocultación. Normalmente, este truco acelera la mayoría de las macros de VBA aproximadamente 10 veces porque la aplicación no tiene que volver a dibujarse mientras se ejecuta el código.
Esto debería ayudar en su caso porque está verificando cada celda individualmente y ocultando la fila individualmente en lugar de ocultar filas por lotes.
Respuesta2
Ni siquiera veo cómo funciona tu código.
Tienes las siguientes 2 lineas
If Not IsEmpty(cell) Then
If cell.Value = "" Then
Si la primera línea no está vacía, la segunda línea siempre devolverá falso. La primera línea dice "si la celda no está vacía" y la siguiente línea dice "si la línea está vacía"... Bueno, ya se ha evaluado que no está vacía. Por lo tanto, nunca debería poder ocultar la fila, por lo que no sé cómo funciona su código. Sospecho que está sucediendo algo más fuera del código, pero...
Sin embargo, esto funciona bien en mi máquina.
Sub Button1_Click()
Dim cell As Range
For Each cell In Range("A1:A1600")
If cell.Value = "" Then
cell.EntireRow.Hidden = True
End If
Next
End Sub
Tengo 1600 filas, se necesitan aproximadamente 5 segundos para ejecutarse