Macro para apagar dados em diversas planilhas do excel

Anônima
2015-05-29T14:52:40+00:00

Bom dia Senhores,

Tenho um arquivo com diversas planilhas (Ex: Painel, Diário, Semanal, Mensal) coloquei um botão na planilha Painel chamado atualizar, a ideia do botão é para que quando clicado, ele apague os dados nas colunas A e B das planilhas Diário, Semanal e Mensal. Para que em seguida eu importe dados de outro arquivo para preencher essas colunas (Obs: ainda não criei a macro de importação). 

Eu consegui fazer uma Macro que apaga os dados, porém ela só funcionou no botão que coloquei diretamente em cada planilha Diário, Semanal, Mensal.

Sub ApagaDados()

Dim Col

If Range("A1").Value <> "" Then

Select Case ActiveSheet.Name

Case "45_DIARIO", "45_SEMANAL"

Col = "A:B"

Case Else

Col = "A:BM"

End Select

Columns(Col).Select

Selection.QueryTable.Delete

Selection.ClearContents

Range("A1").Select

Else

MsgBox "Planilha " & ActiveSheet.Name & " não possui dados!", , "Atenção"

End If

End Sub

Não sou muito experiente em VBA, porém acredito que o fato de eu não conseguir executar a macro a partir de um botão em outra planilha tenha a ver com a chamada ActiveSheet.Name, porque nesse caso ele analisa a planilha selecionada atualmente. Mas para executar a partir de um botão em outra planilha ainda não descobri como fazer.

Desde já agradeço a ajuda de todos!

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2015-05-29T16:08:30+00:00

Talvez algo assim

Estou supondo que as tres planilhas têm nomes

45_DIARIO

45_SEMANAL

45_MENSAL

Sub aTest()

    Dim wsArray As Variant, ws As Variant, col As String

    'Cria um array com os nomes das planilhas

    wsArray = Array("45_DIARIO", "45_SEMANAL", "45_MENSAL")

    'Loop no array de nomes

    For Each ws In wsArray

        If Sheets(ws).Range("A1") <> "" Then

            Select Case ws

                Case "45_DIARIO", "45_SEMANAL"

                    col = "A:B"

                Case Else

                    col = "A:BM"

            End Select

            Sheets(ws).Columns(col).ClearContents

        Else

             MsgBox "Planilha " & ws & " não possui dados! Atenção"

        End If

    Next ws

End Sub

Espero que ajude

M.

Esta resposta foi útil?

2 pessoas acharam esta resposta útil.
0 comentários Sem comentários

3 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2015-06-01T21:32:01+00:00

    MCBranco, vou te incomodar um pouco mais.

    Ainda com relação a essa planilha, consegui adaptar a macro para apagar os dados nas em todas as planilhas, utilizando um único botão que coloquei na Planilha Painel.

    Porém, não consigo fazer funcionar a macro que criei para importar os dados nas planilhas citadas acima.

    Poderia me ajudar!

    Desde já obrigado!

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2015-05-29T18:25:46+00:00

    Valeu!

    Fico feliz por ajudar :)

    M.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2015-05-29T17:57:26+00:00

    Mcbranco,

    Maravilha cara!

    Funcionou corretamente.

    Muito Obrigado!

    Esta resposta foi útil?

    0 comentários Sem comentários