Experimente.
Acrescentei as linhas abaixo:
Application.ScreenUpdating = False
Application.ScreenUpdating = True
ActiveWindow.SmallScroll Down:=8 >> ajuste o valor 8 se necessário; se você uniformizar a quantidade de linhas vazias entre as tabelas dos APs a posição final daquelas tabelas também será uniforme
Sub Localizar()
Application.ScreenUpdating = False
Plan1.ScrollArea = ""
Plan1.Activate
Range("C2").Activate
Do Until ActiveCell = Plan2.Range("B3") And ActiveCell.Offset(1, -1) = Plan2.Range("B4")
ActiveCell.Offset(1, 0).Activate
Loop
Application.ScreenUpdating = True
ActiveCell.Offset(2, 0).Activate
ActiveWindow.SmallScroll Down:=8
Plan1.ScrollArea = Range(ActiveCell, ActiveCell.Offset(20, 30)).Address
End Sub
Osvaldomp, sua solução funcionou corretamente porém, decidi fazer uma Aba para cada AP, que facilitará na execução dos outros códigos. Muito obrigado pela atenção!
Acho que agora entendi. Nesse caso, não seria melhor você criar uma apa para cada AP? Você pode, inclusive, deixá-las, através do próprio código, invisíveis para o usuário comum.
Fazendo assim (uma aba para cada AP) você não precisará usar ScrollArea.
wag, realmente, pensei melhor e criar uma aba pra cada AP é melhor mesmo. Muito obrigado pela atenção!
Aproveitando (sem querer abusar ), estou criando um For Next para percorrer todas as planilhas conforme o código abaixo:
Sub SubsAnos()
UltPlan = ThisWorkbook.Sheets.Count
For i = 2 To UltPlan
Plan(i) .Visible = True
Plan(i).Select
Range("B4") = "2016"
Plan(i).Visible = False
Next
Porém o comando Plan(i) está dando "Erro de sinxtaxe". Tentei o Worksheets(i) também porém, não sei por qual motivo, ele não percorrer na ordem correta (Plan1, Plan2, Plan3) e sim de outra forma.
Qual seria o comando correto?
Postado : 31/08/2016 9:19 am