Você está lendo o objeto range, quanto mais vc coloca isso, pior vai ficar sim, a cada recalculada, é um risco grande.
Eu dei uma melhorada no desempenho do código, mas eu sugiro que vc não deixe esse código no calculate das planilhas, deveria deixar em algum evento menos disparado.
Enfim, fica aí o código novo, e testado!
Private Sub Worksheet_Calculate()
Dim rngEsconder As Excel.Range
Dim arrConteudo As Variant
Dim linConteudo As Long
Dim colConteudo As Long
Application.ScreenUpdating = False
With Range("BW12:BW111")
arrConteudo = .Value
.EntireRow.Hidden = False
End With
For linConteudo = LBound(arrConteudo, 1) To UBound(arrConteudo, 1)
For colConteudo = LBound(arrConteudo, 2) To UBound(arrConteudo, 2)
If arrConteudo(linConteudo, colConteudo) = 0 Then
If Not rngEsconder Is Nothing Then
Set rngEsconder = Application.Union(rngEsconder, Cells(linConteudo, 1).EntireRow)
Else
Set rngEsconder = Cells(linConteudo, 1).EntireRow
End If
End If
Next colConteudo
Next linConteudo
If Not rngEsconder Is Nothing Then rngEsconder.EntireRow.Hidden = True
Application.ScreenUpdating = True
End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 26/02/2015 7:52 am