Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige