- 26 Out 2016 às 23:12
#16905
Amigo, muito obrigado pela atenção.
Eu entendo pouquíssimo de VBA, por isso, não consegui aplicar o seu código ao meu caso.
Coloco abaixo o código que estou tentando fazer funcionar:
Tenho 6 planilhas no meu projeto: planilha 2016, planilha 2017, planiha 2018, planiha 2019, planilha 2020 e Relatório.
Coloquei uma condição para, de acordo com o valor da célula "B14" da planilha Relatório, o excel filtrar os dados da de determinado planilha e copiar para a planilha Relatório. Por exemplo: se o valor da célular "B14" for 2016, buscará os dados da planilha 2016. Até aí ocorre tudo bem.
No entanto, quero que, se a célula B14 estiver vazia, quero que filtre os dados de todas a plnilhas: Filtre os dados planilha 2016, depois, logo abaixo, filtre os dados da planilha 2017 e assim por diante.
Não estou conseguindo fazer isso. Ele copia os dados da planilha 2016, e quando vai copiar os dados da planilha 2017, aparece o erro "O intervalo de extração tem um nome de campo ausente ou inválido".
Se puder me ajudar, agradeço.
Segue o código abaixo:
Public Sub GerarR()
‘Filtrar dados da planilha 2016
If shtRelatorio.Range("b14").Value = 2016 Then
Sheets("Planilha 2016").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False
'Filtrar dados da Planilha Planilha 2017
ElseIf shtRelatorio.Range("b14").Value = 2017 Then
Sheets("Planilha 2017").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False
‘Filtrar Dados da Planilha Planilha 2018
ElseIf shtRelatorio.Range("b14").Value = 2018 Then
Sheets("Planilha 2018").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False
‘Filtrar Dados da Planilha Planilha 2019
ElseIf shtRelatorio.Range("b14").Value = 2019 Then
Sheets("Planilha 2019").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False
‘Filtrar dados da Planilha 2020
ElseIf shtRelatorio.Range("b14").Value = 2020 Then
Sheets("Planilha 2020").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("criterios"), CopyToRange:=shtRelatorio.Range("LocalRelatorio"), Unique:=False
' Filtrar os dados de todas as as planilhas
ElseIf shtRelatorio.Range("b14").Value = "" Then
Sheets("Planilha 2016").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("f2:h3"), CopyToRange:=shtRelatorio.Range("f7:j7"), Unique:=False
shtRelatorio.Range("f722").End(xlUp).Offset(1, 0).Select
Sheets("Planilha 2017").Range("B2:J722").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=shtRelatorio.Range("f2:h3"), CopyToRange:=ActiveCell, Unique:=False
End If
End Sub