Como vc tem muitas linhas e colunas, provavelmente o código vai inflando a memória até que dá erro (foi um estouro, não foi?).
Se foi mesmo um estouro, ao rodar passo a passo, por outro lado, vc dá tempo para esvaziar a memória, por isso não dá erro.
Para evitar isso, vamos simplificar, sem ficar selecionando e copiando coisas (o que no VBA é dispensável, e aliás, não se deve fazer nunca):
Sub copiar_em_ordem()
Dim i As Long, j As Long, n As Long
Application.ScreenUpdating = False
j = 1
For k = 1 To 11
For i = 1 To 40
With Sheets("AN_C")
If .Cells(5, i).Value2 = k Then
.Range(.Cells(8, i), .Cells(8, i).End(xlDown)).Copy _
Sheets("BookAN_C").Cells(8, j)
j = j + 1
End If
End With
Next i
Next k
Application.ScreenUpdating = True
End Sub
Creio que deve funcionar.
Abs
Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.
Gilmar
Postado : 27/01/2015 6:37 am