Notifications
Clear all

Problema com filtro avançado em VBA

2 Posts
2 Usuários
0 Reactions
1,159 Visualizações
(@evilmaax)
Posts: 82
Trusted Member
Topic starter
 

Boa tarde

Um amigo me pediu ajuda com um problema que segue:

Uma aplicação VBA calcula alguns custos na empresa através de duas conexões com banco de dados Oracle. Ele gravou a macro através de uma operação manual (quando feita manualmente funciona 100%), porém, quando tenta rodar usando VBA o código não funciona.

Sub custo()

'atualizacao da data
For Each c In Worksheets("BD2").Range("B1:B152")
 If c.Value <> "MOV_DATMOV" Then
 c.Value = ">" & DateAdd("yyyy", -1, Date)
 Else
 c.Value = "MOV_DATMOV"
 End If
Next c

For Each d In Worksheets("BD2").Range("C1:C152")
 If d.Value <> "MOV_DATMOV" Then
 d.Value = "<" & Date
 Else
 d.Value = "MOV_DATMOV"
 End If
Next d

'filtro de todas as despesas
'desp 001
Sheets("BD1").Columns("J:T").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("BD2").Range("A1:C2"), CopyToRange:=Range("A2"), _
        Unique:=False

Seguem os prints das tabelas para ajudar a identificar o erro.

Obrigado

 
Postado : 27/02/2018 2:34 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Faça um teste após alterar o intervalo que contém os critérios para a planilha de origem dos dados:
altere esta linha ~~~> CriteriaRange:=Sheets("BD2").Range("A1:C2")
para ~~~> CriteriaRange:=Sheets("BD1").Range("A1:C2")

Ainda, se você pretende colar os dados filtrados na planilha BD2
altere ~~~> CopyToRange:=Range("A2")
para ~~~> CopyToRange:=Sheets("BD2").Range("A2")

Se não funcionar sugiro que você disponibilize uma amostra do seu arquivo Excel (prints de planilhas não servem), com algumas linhas com dados e com o resultado desejado.

Osvaldo

 
Postado : 27/02/2018 7:07 pm