Notifications
Clear all

Rodar macro conforme dado inserido na célula

3 Posts
2 Usuários
0 Reactions
1,587 Visualizações
(@jacocwb)
Posts: 2
New Member
Topic starter
 

Pessoal

Tenho dados mensais em uma tabela dinâmica
Como faço para que, quando eu digitar "Mai" na célula J5,
ele execute a Macro que vai filtrar nesse mês a tabela dinâmica?

Se ajudar, eu achei em um site este código, mas não está funfando aqui:
====================

Private Sub Worksheet_Change(ByVal Target As Range)

'Como Executar A Macro Com Base No Valor Selecionado Da Lista Suspensa No Excel?
'FONTE:  https://pt.extendoffice.com/documents/excel/4421-excel-run-macro-from-drop-down-list.html 
  If Not Intersect(Target, Range("J6")) Is Nothing Then
   Select Case Range("J6")
     Case "Mai": Mai 'se Mai na célula J6, e ele roda a macro "Mai"
     Case "Jun": Jun
     Case "Jul": Jul
   End Select
  End If
End Sub

====================
Minha macro que filtra a Tab Dinamica pelo mês:

Sub Mai()

  ActiveSheet.PivotTables("Tabela dinâmica10").PivotFields("MÊS").ClearAllFilters
  ActiveSheet.PivotTables("Tabela dinâmica10").PivotFields("MÊS").CurrentPage = _
  "5/2021"
  ActiveSheet.PivotTables("Tabela dinâmica11").PivotFields("MÊS").ClearAllFilters
  ActiveSheet.PivotTables("Tabela dinâmica11").PivotFields("MÊS").CurrentPage = _
  "5/2021"

End Sub

Agradeço desde já qualquer ajuda, obrigado. ;)

_________________

Editado pela moderação. Motivos: 1) Procure utilizar o botão Código (< >) sempre que for inserir código VBA ou Fórmulas; 2) Evite inserir texto totalmente em maiúsculas, mesmo em títulos de tópicos, exceto se forem nomes de fórmulas que originalmente são maiúsculos.

 
Postado : 11/06/2021 1:26 pm
Tags do Tópico
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bem vindo ao Planilhando, @jacocwb

Se possível, em suas próximas solicitações, anexe um pequeno modelo com sua problemática bem definida pra evitar trabalho e retrabalho aos demais integrantes. Isso agiliza as respostas e facilita os testes, ok?

Veja se essas adaptações lhe atendem:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("J6")) Is Nothing Then
   FiltraTDPeloMês nomeTD:="Tabela dinâmica10", Mês:=Range("J6").Value
   FiltraTDPeloMês nomeTD:="Tabela dinâmica11", Mês:=Range("J6").Value
  End If
End Sub

Sub FiltraTDPeloMês(nomeTD As String, Mês As String)
  With ActiveSheet.PivotTables(nomeTD).PivotFields("MÊS")
    .ClearAllFilters
    .CurrentPage = Format(DateValue(1 & Mês & 2021), "m/yyyy")
  End With
End Sub

 
Postado : 11/06/2021 2:41 pm
(@jacocwb)
Posts: 2
New Member
Topic starter
 

Obrigado @Edsonbr 
Um outro user me ajudou com essa, que resolveu:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Texto As String
Dim arr As Variant
arr = Array("Jan", "Fev", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez")
If Not Intersect(Target, Me.Range("J5")) Is Nothing Then
Texto = Application.WorksheetFunction.Match(Range("J5").Value2, arr, 0)

Me.PivotTables("Tabela dinâmica10").PivotFields("MÊS").ClearAllFilters
Me.PivotTables("Tabela dinâmica10").PivotFields("MÊS").CurrentPage = Texto & "/2021"
End If
End Sub

 
Postado : 11/06/2021 2:54 pm