Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Excel VBA: 1x Eingabe für mehrere Filter in Pivot


Betrifft: Excel VBA: 1x Eingabe für mehrere Filter in Pivot von: Pascal
Geschrieben am: 17.09.2019 10:01:00

Hallo zusammen,

ist es möglich einen VBA-Code in einem Tabellenblatt (in diesem Fall "Pvt Ergebnis1") zu hinterlegen, welcher mich beim Öffnen dieses Tabellenblattes auffordert einen Eintrag aus einem Filter auszuwählen, welcher dann in 3 verschiedenen Pivottabellen angewendet wird?

So müsste ich nicht jedes mal alle Filter einzeln auswählen. Der Filter bezieht sich auf die Spalte "Name".

Die 3 Pivottabellen haben alle die gleiche Datenquelle (Tabellenblatt "Datenquelle"), jedoch andere Ausgaben (Werte, Ergebnisse etc.). Eine der Pivottabellen befindet sich auf dem gleichen Tabellenblatt (Tabellenblatt "Pvt Ergebnis1"), die anderen 2 auf einem anderen Tabellenblatt (Tabellenblatt "Pvt Ergebnis2+3").

Beim Öffnen von Tabellenblatt "Pvt Ergebnis1" soll diese Abfrage erscheinen.

Beispiel-Datei:
https://www.herber.de/bbs/user/132065.xlsx

Hätte jemand eine Idee?

Vorab vielen Dank und

mit freundlichen Grüßen
Pascal

  

Betrifft: Bearbeitung sperren, bis Zellinhalt anders... von: 1713418.html
Geschrieben am: 17.09.2019 10:41:17

Hallo Pascal,

ich habe in einem Dokument Codes laufen, die zum Einen eine MessageBox beim Öffnen bringt, zum Anderen dich daran hindert, eine andere Zelle auszuwählen, solange ein bestimmter Text in einer bestimmten Zelle steht.

Code: Steht in H30 XXX, dann zwingt dich Excel, erst diesen Eintrag (bei mir aus Dropdown) zu ändern. Steht dann YYY in Zelle H30, kannst du das gesamte Blatt bearbeiten. Das musst du logischerweise noch anpassen.
Dieser kommt in das Codefenster des Tabellenblattes.

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
          With Range("H30").Cells(1)                      
              If .Value = "XXX" Then                                        'Wenn dieser Wert in  _
      Zelle,
                  On Error Resume Next
                      Application.EnableEvents = False                      'dann Blatt sperren
                      .Select                                               'Auswahl aus Liste
                      Application.EnableEvents = True                       'Blatt freigeben
                  On Error GoTo 0
              End If
          End With
      End Sub
ich würde jetzt mal vermuten, dass du die MessageBox folgendermaßen hinbekommst, da ich jetzt davon ausgehe, dass beim Öffnen der Arbeitsmappe auch mal andere Blätter aktiv sein können.
Private Sub Worksheet_Activate()
             MsgBox "Bitte zuerst Auswahl treffen", 0, "Hinweis"       'Textbox mit Hinweis bei Ö _
      ffnen
      End Sub


Wenn du dies nicht wünschen solltest, du also grundsätzlich die Bearbeitung nicht einschränken willst und wirklich ausschließlich eine MsgBox erscheinen soll, dann reicht:
      
      Private Sub Workbook_Open()
             MsgBox "Bitte zuerst Auswahl treffen", 0, "Hinweis"       'Textbox mit Hinweis bei Ö _
      ffnen
      End Sub
Gruß Pierre
  

Betrifft: hm... von: 1713451.html
Geschrieben am: 17.09.2019 12:09:41

Umso öfter ich deinen Beitrag lese, desto mehr glaube ich, dass ich dich komplett falsch verstanden habe.

Wenn dem so sein sollte, sorry dafür!

Ich mach mal wieder offen...

  

Betrifft: AW: hm... von: 1713583.html
Geschrieben am: 18.09.2019 08:18:57

Hi,
habe gestern schon geantwortet doch irgendwie ist diese Antwort in den weiten des Internets verschwunden haha..

Naja zurück zum Thema, ich möchte das Problem nochmal schildern.

Ich habe in der Excel-Datei 3 verschiedene Pivottabellen.
Alle 3 Pivotabellen haben die gleiche Datenquelle (Arbeitsblatt "Datenquelle")

Die erste Pivottabelle befindet in dem Tabellenblatt "Pvt Ergebnis1"
Die andern 2 Pivottabellen befinden sich im Tabellenblatt "Pvt Ergebnis2+3"

Alle 3 Pivottabellen haben den gleichen Filter, nämlich den Filter "Name" aus der Datenquelle.

Ich möchte bei Eintritt in das Tabellenblatt "Pvt Ergebnis1" einen Filter (Name) auswählen müssen.
Entweder über die Pivottabelle selbst oder über einen anderen Weg.
Wenn ich den Filter bzw. den Eintrag aus dem Filter ausgewählt habe, möchte ich das dieser auf alle Pivottabellen angewendet wird und nicht nur auf eine. So muss ich nicht jeden Filter einzeln auswählen.

Hoffe ich konnte es diesmal ein wenig besser erklären.

Schonmal vielen Dank für die Hilfe!


mfg
Pascal

  

Betrifft: Ansatz von: 1713591.html
Geschrieben am: 18.09.2019 09:15:26

Hallo Pascal,

also war ich nicht komplett daneben. :-)

Eine fertige Lösung kann ich dir leider nicht geben, aber Ansätze.

Unter diesem Link: https://contexturesblog.com/archives/2012/04/12/change-pivot-table-filter-all-sheets-or-active-sheet/ kannst du ganz unten auf der Seite mal auf PT0025 klicken, da wirst du weiter geleitet und dort die Datei PT0025 runter laden.
Das scheint mir so, als wäre das bzgl. deiner Anforderung genau das richtige, um eben den Filter auf alle vorhandenen Pivots anzuwenden.


Um einen Namen bzw. eine Auswahl treffen zu MÜSSEN, schau mal in dieser Mappe: https://www.herber.de/bbs/user/132085.xlsm


Ich habe mal einfach nur kurz was nachgebaut.
Im Blatt "Tabelle2" wird automatisch 'XXX' in Zelle A4 beim Öffnen geschrieben, solange dieser Eintrag dort steht, kannst du nichts tun, außer einen anderen Filter (Name1, Name2 usw.) zu wählen.
Vorher kommst du in keine andere Zelle rein.

Vielleicht hilft dir das schon mal weiter.

Gruß Pierre

  

Betrifft: Endlich von: 1713605.html
Geschrieben am: 18.09.2019 10:20:37

Hallo Pascal,

sorry für die Verwirrung oben.

Ich glaube es geschafft zu haben: https://www.herber.de/bbs/user/132087.xlsm

Es war tatsächlich so, dass man im Grunde den Code der genannten Seite in beide Tabellenblätter 1:1 übernehmen konnte.

Das Einzige, was ich ändern musste, war dass die Bezeichnungen (vorher bei dir Ergebnis 1, Ergebnis 2, Ergebnis 3) alle Einheitlich sein müssen. Habe die einfach mal "Name" genannt. Das dann im Modul1 noch anpassen, fertig.

Solange jetzt auf Blatt "Pvt Ergebnis1" in Zelle B1 '(Alle)' steht, kannst du nicht aus der Zelle raus und der Cursor springt immer wieder da hin zurück.

Du musst nur dafür sorgen, dass die Auswahl (Alle) beim Öffnen immer in B1 steht.
Ansonsten kann man das noch in den vorhandenen Code einbauen.

Gruß Pierre

PS: Nur offen, damit du es evtl. schneller findest.

  

Betrifft: AW: Endlich von: 1714035.html
Geschrieben am: 20.09.2019 09:15:40

Hallo Pierre,

hat super geklappt!

Vielen Dank!


mfg
Pascal

  

Betrifft: AW: Endlich von: 1714043.html
Geschrieben am: 20.09.2019 09:57:04

Hallo Pascal,

das freut mich! :-)

Ein Nachtrag:
Diesen Code noch unter "Diese Arbeitsmappe" einfügen, dann ist gewährleistet, dass
1. immer das Blatt "Pvt Ergebnis 1" beim Öffnen der Mappe aktiv ist
2. immer "(Alle)" als Listenauswahl beim Start in der Zelle steht!
Damit sparst du dir also, vor dem Schließen darauf achten zu müssen.

''einfügen in "Diese Arbeitsmappe"
Private Sub Workbook_Open()
''In einer Zelle wird beim Öffnen immer ein bestimmter Text angezeigt
''Außerdem wird immer ein bestimmtes Blatt beim Start geöffnet

    'MsgBox "Bitte zuerst Auswahl treffen", 0, "Hinweis"

        Sheets("Pvt Ergebnis1").Select    'auskommentieren, falls egal sein soll, welches Blatt  _
beim Start aktiv ist
    Application.EnableEvents = False
        Sheets("Pvt Ergebnis1").Range("B1").MergeArea.Cells(1) = "(Alle)"     ''Zelle und Text  _
anpassen
        Sheets("Pvt Ergebnis2+3").Range("B1").MergeArea.Cells(1) = "(Alle)"
        Sheets("Pvt Ergebnis2+3").Range("E1").MergeArea.Cells(1) = "(Alle)"
    Application.EnableEvents = True
End Sub


''=Kommentare zum Makro
'=MessageBox ist natürlich alternativ. ' löschen, wenn Box erwünscht!

Beiträge aus dem Excel-Forum zum Thema "Excel VBA: 1x Eingabe für mehrere Filter in Pivot"