Executar macro em todas as guias no arquivo do Excel - um código de macro de linha disponível?

0

Eu tenho uma macro que é executada na minha planilha atual, mas gostaria que ela fosse exibida em todas as guias da minha pasta de trabalho com o clique de um botão. Sua finalidade é substituir todos os valores indicados em f5 pelo valor em f6, nas células A2: C100.

Este é o código atual:

Sub try()
Range("A2:C100").Select
    Selection.Replace What:=Range("f5").Value, Replacement:=Range("f6").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Sub Button4_Click()

End Sub
    
por Tobias Unruh 30.10.2017 / 20:48

1 resposta

0

Eu assumo que o F5 & F6 se refere a uma folha fixa. Diga 'Sheet1' no meu exemplo. Portanto, apesar de você poder ter várias planilhas em seu wordbook, o item Localizar & Substituir refere-se sempre à Folha1! F5 & Folha1! F6 por exemplo.

Modifique o código a seguir. Isso fará um loop por todas as folhas da pasta de trabalho atual e executará o código para cada planilha. Em Sub Try (), a folha é referenciada pelo seu codinome, e. Sheet1.Range neste exemplo e não o nome real da planilha.

Você também pode combinar tudo em uma única macro.

Public Sub try()
ActiveSheet.Range("A2:C100").Select
    Selection.Replace What:=Sheet1.Range("f5").Value, Replacement:=Sheet1.Range("f6").Value, LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub


Sub Button1_Click()
For Each WS In ThisWorkbook.Sheets
    WS.Activate
    Call try
Next WS
End Sub

Não tenho certeza se pode haver um código de liner, mas para obter a mesma sensação que você pode colocar: colocar todas as instruções em uma única linha. Algo como

Sub Button1_Click()
  For Each WS In ThisWorkbook.Sheets: WS.Activate:    Call try: Next WS
End sub
    
por 31.10.2017 / 01:08