Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Pivot-Table - Auswahlmöglichkeiten einschränken

Forumthread: Pivot-Table - Auswahlmöglichkeiten einschränken

Pivot-Table - Auswahlmöglichkeiten einschränken
13.12.2014 13:32:48
Oliver
Hallo,
Ich stehe vor folgendem Problem:
Ich habe eine Datei mit mehreren Pivot-Tabellen erstellt. Jede Pivot-Tabelle ist in einem eigenen Tabellenblatt.
In diesen Tabellen befinden sich jeweils im Berichtsfilter die Mitarbeiternamen.
Diese würde ich in den Rohdaten aus denen die Pivot-Tabellen erstellt werden so einstellen, dass es sich dabei jeweils um die Nutzernamen von Excel (Application Username) handelt.
Das Problem: Jeder Mitarbeiter soll nur die Gesamtdaten (im Filter also (Alle) sehen können und seine eigenen Daten, jedoch nicht die eines anderen einzelnen Mitarbeiters.
Ich kann aufgrund sensibler Daten nicht die originalen Dateien hochladen, daher habe ich eine kleine Beispieldatei hochgeladen die aber nach dem gleichen Prinzip aufgebaut ist. Es handelt sich um reine Beispieldaten ohne sinnvolle Interpretation :-).
https://www.herber.de/bbs/user/94382.xlsm
Hinweis: Ich habe das STRG-Blatt und das VBA-Projekt mit dem Passwort Oliver geschützt da ich das nachher auch so haben möchte damit mir niemand in den Formeln im STRG-Blatt rumfuhrwerkt.
Meine Idee war folgende:
1) Setzen der Filter beim Öffnen der Datei auf die Benutzernamen in "Diese Arbeitsmappe", dies funktioniert:

Private Sub Workbook_Open()
'Benutzernamen in Zelle C2 eintragen
Worksheets("STRG").Range("C2").Value = Application.UserName
' In den Berichtsfiltern auf den Wert aus Zelle C2 setzen
Worksheets("Geschaeft").PivotTables("PivotTable2").PivotFields("Mitarbeiter").ClearAllFilters
Worksheets("Geschaeft").PivotTables("PivotTable2").PivotFields("Mitarbeiter").CurrentPage =  _
Worksheets("STRG").Range("C2").Value
Worksheets("Produkt").PivotTables("PivotTable1").PivotFields("Mitarbeiter").ClearAllFilters
Worksheets("Produkt").PivotTables("PivotTable1").PivotFields("Mitarbeiter").CurrentPage =  _
Worksheets("STRG").Range("C2").Value
End Sub


2) im STRG-Blatt habe ich auf die Berichtsfilter referiert und mit einer Wenn-Dann-Funktion auf eine eigens erstellte Funktion Makro_starten zugegriffen die nur dann das Makro "Schließen" startet wenn der Berichtsfilter ungleich (Alle) oder dem Nutzernamen ist. Dieses Makro soll einfach das Workbook schließen ohne zu Speichern und ohne Abfrage zum Speichern.
Diese Funktion habe ich in Modul1 abgelegt.
Function Makro_starten()
'Makro Schließen aurufen
Call Schließen
End Function
Sub Schließen()
MsgBox "Makro Schließen wurde gestartet"
'ThisWorkbook.Close
End Sub

Ich habe zum Testen eine MsgBox eingefügt, wenn ich nur diese MsgBox nehme geht das Ganze auch. Kommentiere ich die Box jedoch aus und will nur das Workbook schließen geht es nicht. Alternativ wäre auch ok, wenn die Blätter "Geschaeft" oder "Produkt" gelöscht werden.
Kann mir jemand helfen? Ich wäre unendlich dankbar, da ich sicher schon 20 Stunden dran sitze und noch VBA-Anfänger bin.
Eine von vielen Alternativen die ich auch schon probiert habe:
-Sperren der Zellen in denen der Berichtsfilter liegt und die anderen Zellen sollen nicht gesperrt sein. Hier wurde ich aber überrascht dass man dennoch Filtern kann auch wenn die Zellen gesperrt sind.
-Die Feldlliste nicht mehr einblendbar einstellen
Viele Grüße
Oliver

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot-Table - Auswahlmöglichkeiten einschränken
14.12.2014 02:51:52
fcs
Hallo Oliver,
ich hab deine Datei mal umgestrickt und die Makros erweitert, so dass zumindest für den "einfachen" Exceluser, die Daten anderer Anwender nicht so ohne weiteres eingesehen werden können.
Ich hab ein Blatt "Info" eingefügt. Dieses ist beim Öffnen und vor dem Schliessen der Datei das einzige sichtbare Blatt. alle anderen Blätt sind mit Status xlSheetVeryHidden ausgeblendet.
https://www.herber.de/bbs/user/94394.xlsm
Sind beim Öffnen der Datei die Makros aktiv, dann werden "Produkte" und "Geschaeft" eingeblendet. Die anderen Blätter bleiben ausgeblendet und können nur per Makro oder via Eigenschafen im VBA-Editor eingeblendet werden.
Dein Ansatz funktionierte nicht weil Funktion in Tabellenformeln keine umfangreichen Aktionen durchführen dürfen sondern nur ein Ergebnis zurückgeben dürfen.
Hier muss man den Umweg über Ereignismakros gehen. In diesem Fall kann man das Calculate-Ereignis im Blatt STRG verwenden, um ggf. die Datei zu schließen. Das entsprechende Makro prüft, ob die Zelle D6 den Wert FALSCH hat. In dieser Zelle ist jetzt eine Formel, die die Anzahl FALSCH-Werte in den andern Zellen zählt. Damit Berechnungsmodus "manuel" das Makro nicht aushebelt, wird über Ereignismakros unter den beiden Pivottabellen die Berechnung zusätzlich getriggert.
In allen Blättern ist der Blattschutz aktiviert und auch die Arbeitsmappen-Struktur ist per Kennwort geschützt. So können keine Blattnamen geändert werden und in den beiden Pivottabellen können die Filterwerte geändert werden.
Das Kennwort für den Schutz wird in einer Public-Variablen im Modul vorgegeben. z.Zt.: Oliver
Für den Admin der Datei gibt es ein paar Hilfswerkzeuge. So können alle Blätter eingeblendet und deren Schutz aufgehoben werden.
Gruß
Franz
Anzeige
;
Anzeige

Infobox / Tutorial

Auswahlmöglichkeiten in der Pivot-Tabelle einschränken


Schritt-für-Schritt-Anleitung

Um die Auswahlmöglichkeiten in einer Pivot-Tabelle in Excel einzuschränken, kannst Du die folgenden Schritte befolgen:

  1. Erstelle eine Pivot-Tabelle: Füge eine neue Pivot-Tabelle in Deinem Excel-Dokument hinzu und wähle die Datenquelle aus.

  2. Füge deinen Berichtsfilter hinzu: Ziehe das Feld, das Du filtern möchtest (z. B. „Mitarbeiter“), in den Bereich der Berichtsfilter deiner Pivot-Tabelle.

  3. Nutze VBA für die Benutzeranpassung:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge das folgende VBA-Skript in das „ThisWorkbook“-Modul ein:
    Private Sub Workbook_Open()
       ' Benutzernamen in Zelle C2 eintragen
       Worksheets("STRG").Range("C2").Value = Application.UserName
       ' In den Berichtsfiltern auf den Wert aus Zelle C2 setzen
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           If ws.Name = "Geschaeft" Or ws.Name = "Produkt" Then
               ws.PivotTables(1).PivotFields("Mitarbeiter").ClearAllFilters
               ws.PivotTables(1).PivotFields("Mitarbeiter").CurrentPage = Worksheets("STRG").Range("C2").Value
           End If
       Next ws
    End Sub
  4. Schutz und Sichtbarkeit: Um die Sichtbarkeit anderer Daten zu steuern, kannst Du die Blätter mit dem Status xlSheetVeryHidden ausblenden und nur das Info-Blatt anzeigen.

  5. Makro zur Schließung der Datei: Füge ein weiteres Makro hinzu, das die Datei schließt, wenn der Benutzer versucht, Daten zu sehen, die nicht für ihn bestimmt sind.


Häufige Fehler und Lösungen

  • Fehler: Pivot-Auswahlfeld zeigt falsche Daten
    Lösung: Überprüfe, ob der Benutzername korrekt in Zelle C2 eingetragen wird. Stelle sicher, dass alle relevanten Blätter im VBA-Skript korrekt referenziert sind.

  • Fehler: Das Workbook schließt nicht
    Lösung: Stelle sicher, dass Dein Schließ-Makro nicht durch andere Ereignisse oder Berechnungen blockiert wird. Verwende ThisWorkbook.Close ohne MsgBox, um sicherzustellen, dass die Schließung funktioniert.


Alternative Methoden

Eine Alternative zur Einschränkung der Auswahlmöglichkeiten in einer Pivot-Tabelle ist die Verwendung des Excel-Datenschnitts. Hierbei kannst Du:

  1. Datenbereich filtern: Füge einen Datenschnitt zu Deiner Pivot-Tabelle hinzu, um die Auswahlmöglichkeiten zu visualisieren.
  2. Filtermöglichkeiten anpassen: Stelle sicher, dass Du in den Datenschnitt-Einstellungen die Filteroptionen anpasst, um nur die relevanten Daten anzuzeigen.

Praktische Beispiele

Ein Beispiel für die Verwendung einer Pivot-Tabelle mit eingeschränkter Auswahl ist die Analyse von Mitarbeiterdaten. Du kannst:

  • Eine Pivot-Tabelle erstellen, die die Verkaufszahlen nach Mitarbeitern anzeigt.
  • Den Berichtsfilter so einstellen, dass nur der aktuelle Benutzer seine Daten sieht, indem Du das oben genannte VBA-Skript anwendest.

Ein weiteres Beispiel ist die Verwendung von Datenschnitten, um verschiedene Abteilungen oder Verkaufsregionen zu filtern.


Tipps für Profis

  • Nutze Named Ranges: Verwende benannte Bereiche in Excel, um die Verwaltung Deiner Daten zu vereinfachen und Fehler zu reduzieren.
  • Automatisiere mit VBA: Erweitere Deine VBA-Skripte, um automatisierte Berichterstattung zu ermöglichen. Du kannst z. B. jeden Monat bestimmte Daten an relevante Benutzer senden.
  • Sichere Deine Makros: Schütze Deine VBA-Projekte mit Passwörtern, um sicherzustellen, dass nur berechtigte Benutzer Änderungen vornehmen können.

FAQ: Häufige Fragen

1. Wie kann ich die Pivot-Auswahlfelder anzeigen?
Um das Pivot-Auswahlfeld anzuzeigen, gehe in die PivotTable-Optionen und aktiviere die Einstellung „Pivot-Auswahlfeld anzeigen“.

2. Was kann ich tun, wenn VBA nicht funktioniert?
Überprüfe, ob Makros in Excel aktiviert sind und dass Du die richtige Excel-Version verwendest, die VBA unterstützt. Teste auch die Skripte in einer neuen Arbeitsmappe, um Störungen durch andere Makros auszuschließen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige