Notifications
Clear all

EXECUTAR MACRO EM PLANILHA DIFERENTE

4 Posts
2 Usuários
0 Reactions
1,061 Visualizações
(@wsilva2)
Posts: 17
Active Member
Topic starter
 

Prezados, bom dia.

Sou novo em VBA, e estou com uma dificuldade.

Criei um botão activeX para a execução de uma macro em outra sheet na mesma planilha, porém a macro só executa dentro da sheet que o botão está.

Como resolvo isto?

Muito obrigado.

wsilva2

 
Postado : 06/01/2017 7:49 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia wsilva2,

Se você deixar por exemplo:
range("A1").value = 1

Vai executar apenas na Sheet que estiver ativa.
Indiferente disso, quando eu quero que execute na planilha ativa eu gosto de utilizar assim:
activesheet.range("A1").value = 1

Agora, indiferentemente da Sheet que estiver ativa, para que seja executada em uma outra Sheet, utilize assim:
worksheets("Plan2").range("A1").value = 1

Gosto também de identificar Pasta de Trabalho (Planilha):
thisworkbook.worksheets("Plan2").range("A1").value = 1

Assim não tem erro de talvez ativar uma outra planilha e executar nela e bagunçar tudo...

Jamais preocupe-se com tamanho...
Nem sempre um código curto é melhor ou mais eficiente que um código maior...

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/01/2017 8:08 am
(@wsilva2)
Posts: 17
Active Member
Topic starter
 

Não sei porque, não está funcionando..... Estou tentando colocar o código abaixo dentro do botão, porém dá erro de execução 1004.

Pode me judar?

Private Sub CommandButton1_Click()

    Sheets("Planilha1").Select
    Cells.Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$P$434").AutoFilter Field:=1, Criteria1:=Array("1", _
        "Nr NFS", "PW4 CONTADORES LTDA", "Relatório de Documento Item", "="), Operator:= _
        xlFilterValues
    ActiveWindow.SmallScroll Down:=45
    ActiveWindow.ScrollRow = 210
    ActiveWindow.ScrollRow = 191
    ActiveWindow.ScrollRow = 189
    ActiveWindow.ScrollRow = 173
    ActiveWindow.ScrollRow = 168
    ActiveWindow.ScrollRow = 152
    ActiveWindow.ScrollRow = 149
    ActiveWindow.ScrollRow = 146
    ActiveWindow.ScrollRow = 131
    ActiveWindow.ScrollRow = 125
    ActiveWindow.ScrollRow = 107
    ActiveWindow.ScrollRow = 102
    ActiveWindow.ScrollRow = 82
    ActiveWindow.ScrollRow = 68
    ActiveWindow.ScrollRow = 60
    ActiveWindow.ScrollRow = 42
    ActiveWindow.ScrollRow = 38
    ActiveWindow.ScrollRow = 24
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 1
    Rows("2:1017").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$A$1:$P$327").AutoFilter Field:=1
    ActiveWindow.SmallScroll Down:=-108
    
End Sub
 
Postado : 06/01/2017 9:02 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Tenta assim:

Private Sub CommandButton1_Click()
Dim UltL    As Long

    ThisWorkbook.Worksheets("Planilha1").Cells.AutoFilter
    UltL = ThisWorkbook.Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row
    ThisWorkbook.Worksheets("Planilha1").Range("$A$1:$P$" & UltL).AutoFilter Field:=1, Criteria1:=Array("1", _
    "Nr NFS", "PW4 CONTADORES LTDA", "Relatório de Documento Item", "="), Operator:=xlFilterValues
    ThisWorkbook.Worksheets("Planilha1").Rows("2:" & UltL).Delete Shift:=xlUp
    UltL = ThisWorkbook.Worksheets("Planilha1").Cells(Rows.Count, 1).End(xlUp).Row
    ThisWorkbook.Worksheets("Planilha1").Range("$A$1:$P" & UltL).AutoFilter Field:=1

End Sub

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 06/01/2017 9:46 am