Notifications
Clear all

[MACRO] Como usar mesma macro em diferentes abas.

4 Posts
1 Usuários
0 Reactions
804 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!

Estou com o segunte problema, eu atualizo uma certa base de dados, onde eles não vem(do sistema da empresa que trabalho) na ordem que eu quero, então eu tenho que ordenalos a minha maneira. São muitas abas(próximo de 15) e é uma rotina que passarei para fazerem.

Tentei fazer uma macro para isso, porém a macro funciona somente na aba que eu criei a macro:

Sub ordenar3()
'
' ordenar3 Macro
'

'
Range("A4:P10000").Select
Range("P4").Activate
ActiveWorkbook.Worksheets("017").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("017").Sort.SortFields.Add Key:=Range("P4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("017").Sort
.SetRange Range("A4:P1000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Imagino que o problema está nas linhas (ActiveWorkbook...), porque uso a barra de tarefas para escolher a ordenação.

Minha dúvida é se há alguma maneira de resolver isso? como faço para a macro ler o comando independente da aba ( no exemplo ela executa somente na aba com nome "017").

Tks pessoal!

 
Postado : 23/04/2013 8:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Sem ter como fazer os testes, e considerando que todas as planilhas utizem a mesma range, experimente assim:

Sub Ordenar()

Range("A4:P10000").Select
Range("P4").Activate
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range("P4"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveSheet.Sort
.SetRange Range("A4:P1000")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
 
Postado : 23/04/2013 8:06 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

PerfecT!

Para eu aprender a pescar e não somente ter o peixe...
A diferença esta em trocar o "Workbook.Worksheets("017")" por "Sheet" , ou seja, quando eu colocar worbook.worksheet(nome planilha) estarei sendo específico, se colocar somente o sheet, vai aplicar em qualquer uma...?

Muito obrigado Reinaldo!

 
Postado : 23/04/2013 8:17 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

ActiveWorkbook.Worksheets("017") --> refere-se a planilha (aba) de nome "017" do arquivo ativo. Assim mesmo que mude de planilha (aba) está se referindo à "017".
ActiveSheet --> refere-se a planilha ativa; então irá "olhar" a planilha (aba) que estiver ativa (selecionada)

 
Postado : 23/04/2013 8:48 am