Estou usando VBA para que o filtro da tabela dinamica seja o valor de uma celula, o código funcionada para qualquer dado exceto datas abreviadas (Ex: 09/12/2014), o erro ocorre ao setar a propriedade .Visible do objeto PivotItem do filtro de Datas da tabela dinamica. Aparece <tipos incompativeis> para a propriedade visible, e não faço idéia do porque, se eu colocar somente a linha ObjectPivotItem("Data").Visible = True também dá erro, mas se ao invés da data abreviada e usar "Mês", o código funciona perfeitamente. Gostaria de saber como posso fazer para corrigir esse erro pois já vasculhei a internet a procura de solução e todos as possíveis soluções não resultaram em sucesso.
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Bom dia!!
Sua dúvida ainda não foi resolvida?
viewtopic.php?f=10&t=14098
Postagem cruzada.
http://usuariosdoexcel.forumeiros.com/t ... namica-vba
Att
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Bom dia!!
Sua dúvida ainda não foi resolvida?
viewtopic.php?f=10&t=14098Postagem cruzada.
http://usuariosdoexcel.forumeiros.com/t ... namica-vbaAtt
A Dúvida viewtopic.php?f=10&t=14098 já foi resolvida. Esse tópico é sobre outro problema.
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Alguém sabe como filtrar data na Tabela Dinamica via célula????
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Boa tarde!!
Tem como postar seu arquivo modelo?
At
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Adicionei o anexo do arquivo modelo, o código está dentro do objeto Sheet, se vc clicar no botão e selecionar dia 05/01/2015 a dinamica deveria filtrar somente essa data, mas não filtra. Testei com nomes de Meses (Exemplo: Novembro) e o mesmo código funciona perfeitamente.
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Boa tarde!!
Eu não tive erro, como me parece uma descrição confusa, teste o código abaixo e retorne dizendo se ajudou ou não!
Private Sub Worksheet_Change(ByVal Target As Range) Dim pvt As PivotTable If Union(Target, Range("C2")).Address = Range("C2").Address Then For Each pvt In ActiveSheet.PivotTables pvt.PivotFields("Data").CurrentPage = Range("C2").Value Next End If End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Para mostrar o erro no meu código é só escolher uma data que não existe na base ou então remover o tratamento de erro que coloquei.
O seu código não dá certo porque você está atribuindo a data no filtro da dinâmica, desse jeito a Tabela Dinâmica vai mostrar dados do ultimo registro que filtrou, mostrando no filtro um dia que não existe na Base.
Escolha o dia 06//01/2015 (esse dia não existe na base) e verá que o mesmo será incluído na lista da Dinâmica, mostrando dados que são de outro dia.
Não se pode atribuir um dado para a dinâmica pq dá esse problema, o jeito é comparar a data que vc escolheu com alguma da lista do filtro da dinamica, assim se a mesma existir na lista, vc deverá a propriedade Visible do item como True.
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Vou tentar com esse código que bolei, acho que agora funciona, o excel trabalha com datas em formato americano (m/d/aaaa) depois posto os resultados:
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
a = Format(Range("$C$2").Value, "d/m/yyyy")
'Esse código funciona perfeitamente para Mês(Ex: Abril), mas para data abreviada (Ex: 01/01/2015) não funciona
Set objPivotField = ActiveSheet.PivotTables("DinamicaData").PivotFields(Index:="Data")
ActiveSheet.PivotTables("DinamicaData").PivotFields("Data").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = a Then
'objPivotItem.Visible = True
PobjPivotField.CurrentPage = Range("C2").Value
Else
'objPivotItem.Visible = False
End If
Next objPivotItem
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Achei a solução pessoal!
Reformulei o código: formato a data como padrão norte americano, comparo a data formatada com a da lista do filtro, se existir eu formato a data para o padrão brasileiro e atribuo a data ao filtro.
Adicionei o anexo com o código pronto e funcionando para quem quiser ver, espero que isso ajude o pessoal que precise trabalhar setando datas abreviadas (dd/mm/aaaa) na Tabela Dinamica por VBA.
Código Funcional:
Dim DataFormatada As Date
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
DataFormatada = Format(Range("$C$2").Value, "m/d/yyyy")
'Esse código funciona perfeitamente para Mês(Ex: Abril), mas para data abreviada (Ex: 01/01/2015) não funciona
Set objPivotField = ActiveSheet.PivotTables("DinamicaData").PivotFields(Index:="Data")
ActiveSheet.PivotTables("DinamicaData").PivotFields("Data").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = DataFormatada Then
'objPivotItem.Visible = True
DataFormatada = Format(Range("$C$2").Value, "dd/mm/yyyy")
ActiveSheet.PivotTables("DinamicaData").PivotFields("Data").CurrentPage = Range("C2").Value
Else
'objPivotItem.Visible = False
End If
Next objPivotItem
ActiveSheet.ChartObjects("Gráfico 1").Activate
ActiveChart.ChartTitle.Text = "Data - " & Range("$M$2").Value
If ActiveChart.ChartTitle.Text = "Data - (Tudo)" Then MsgBox "Sem dados para os critérios selecionados", vbInformation, "Atenção"
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"