![VBA Excel 2007 ajuda a acelerar o código para ocultar linhas](https://rvso.com/image/1395375/VBA%20Excel%202007%20ajuda%20a%20acelerar%20o%20c%C3%B3digo%20para%20ocultar%20linhas%20.png)
Estou tentando escrever um código VBA que oculta automaticamente as linhas se um valor na linha for igual a "". Minha faixa de valores é A37:A400. Como meu alcance é tão grande, meu VbA anterior é lento e parece uma linha de cada vez. Alguma idéia para criar um código rápido que passe por essa lista grande e oculte linhas rapidamente. No momento, leva cerca de um minuto para ocultar as linhas que são muito longas.
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
Responder1
Tente adicionar Application.ScreenUpdating = False
um pouco antes do código de ocultação e adicione Application.ScreenUpdating = True
depois do código de ocultação. Normalmente, esse truque acelera a maioria das macros VBA em cerca de 10x porque o aplicativo não precisa se redesenhar continuamente enquanto o código é executado.
Isso deve ajudar no seu caso, porque você está verificando cada célula individualmente e ocultando a linha individualmente em vez de ocultar as linhas em lote.
Responder2
Não vejo como seu código funciona.
Você tem as seguintes 2 linhas
If Not IsEmpty(cell) Then
If cell.Value = "" Then
Se a primeira linha não estiver vazia, a segunda linha sempre retornará falso. A primeira linha diz "se a célula não estiver vazia" e a próxima linha diz "se a linha estiver vazia"... Bem, já foi avaliado para não estar vazio. Portanto, você nunca deve ser capaz de ocultar a linha, então estou perdido em como seu código funciona - suspeito que haja algo mais acontecendo fora do código, mas...
No entanto, isso funciona bem na minha 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
Eu tenho 1.600 linhas, leva cerca de 5 segundos para executar