Notifications
Clear all

Atribuir Macro à planilha aberta

4 Posts
3 Usuários
0 Reactions
1,155 Visualizações
(@bossan)
Posts: 21
Eminent Member
Topic starter
 

Amigos,
Criei uma macro que foi atribuída a um botão.
Este botão está localizado na Plan1. Quando clicado o botão gera um relatório (Plan2) com algumas células da planilha de origem (Plan1).
Ao copiar a Plan1 (nova planilha "Plan1 (2)"), o botão mantém a macro que considera a Plan1 como origem dos dados.
Meu problema é alterar a macro para que entenda, automaticamente, como origem dos dados a nova planilha, sem ter que fazer isso manualmente a cada cópia, ou seja, colocar no código ao invés de Plan1, uma informação que considere as novas planilhas abertas.
Abraço!!

Segue código que foi atribuído ao botão:

Sub copiar()
Sheet2.Range("a2:e100").ClearContents
Sheet2.Activate

Sheets("Plan1").Range("A4:E5").Copy Destination:=Sheets("Plan2").Range("A1")

Sheets("Plan1").Range("C7").Copy Destination:=Sheets("Plan2").Range("E7")
Sheets("Plan1").Range("C9").Copy Destination:=Sheets("Plan2").Range("E8")
Sheets("Plan1").Range("C12").Copy Destination:=Sheets("Plan2").Range("E9")

End Sub

 
Postado : 01/01/2014 10:53 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Cara, não entendi o que vc deseja (devo estar lesado j no começo do ano), porém, saca esses comandos:

ActiveWorkbook = usa o arquivo que estiver em foco (selecionado)
ActiveSheet = usa a planilha ativa/selecionada

Então vc teria algo do tipo:

ActiveWorkbook.ActiveSheet.Range("a2:e100").ClearContents

Sem precisar referenciar a planilha pelo nome.

Caso, vc queira uma planilha para ser fixa, independente do que vc for fazer, vc pode declará-la como uma variável:

Dim Origem As Worksheet

Origem = ThisWorkbook.ActiveSheet

com isso, mesmo mudando de planilhas, a origem vai permanecer a ue vc definiu.

Espero que ajude.

Em tempo:

Seria isso?

Sub copiar()
Sheet2.Range("a2:e100").ClearContents
Sheet2.Activate

ActiveWorkbook.ActiveSheet.Range("A4:E5").Copy Destination:=Sheets("Plan2").Range("A1")

ActiveWorkbook.ActiveSheet.Range("C7").Copy Destination:=Sheets("Plan2").Range("E7")
ActiveWorkbook.ActiveSheet.Range("C9").Copy Destination:=Sheets("Plan2").Range("E8")
ActiveWorkbook.ActiveSheet.Range("C12").Copy Destination:=Sheets("Plan2").Range("E9")

End Sub
 
Postado : 01/01/2014 11:55 am
(@bossan)
Posts: 21
Eminent Member
Topic starter
 

gtsalikis,
Valeu! Até sem entender você resolveu o problema.
Alterei o código substituindo pelos comandos que você indicou e funcionou perfeitamente.
Obrigado.

O código ficou assim:

Sub copiar()
Sheet2.Range("a2:e100").ClearContents

ActiveWorkbook.ActiveSheet.Range("A4:E5").Copy Destination:=Sheets("Plan2").Range("A1")

ActiveWorkbook.ActiveSheet.Range("C7").Copy Destination:=Sheets("Plan2").Range("E7")
ActiveWorkbook.ActiveSheet.Range("C9").Copy Destination:=Sheets("Plan2").Range("E8")
ActiveWorkbook.ActiveSheet.Range("C12").Copy Destination:=Sheets("Plan2").Range("E9")

Sheet2.Activate
End Sub

 
Postado : 01/01/2014 12:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Caso seja necessário reabrir o tópico, o autor poderá enviar uma MP para um dos moderadores solicitando o desbloqueio.

 
Postado : 01/01/2014 6:52 pm