Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1808to1812
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 mit Blattschutz

Pivot mit Blattschutz
09.02.2021 18:25:34
Julian
Hallo zusammen,
ich bin Neu hier und auch VBA Neuling. :-)
Ich bin dabei ein Bestelltool für die Arbeit zu erstellen, welches wie folgt funktioniert.
Es gibt einen Reiter "Übersicht" auf dem die Auswahl in einer Pivot Tabelle abgebildet wird. Dann gibt es noch mehrere Produktreiter, in denen der Kunde die Menge der gewünschten Artikel auswählen kann. Das funktioniert alles wunderbar.
Damit der Kunde nichts ausversehen ändern kann, möchte ich einen Blattschutz drauf legen, aber die PivotTabelle in dem Reiter "Übersicht" soll sich beim anklicken / aktivieren des Reiter automatisch aktualisieren. Bzw. Alle PivotTabellen, sobald man den jeweiligen Reiter anklickt.
Ich hatte es mit dem Code mal versucht, den ich hier gefunden habe.
https://www.herber.de/forum/archiv/1604to1608/1606742_Pivot_mit_Blattschutz_aktualisieren.html
Das Problem ist, dass auch automatisch ein Blattschutz generiert wird, auch wenn vorher keiner aktiviert war.
Das ist sehr umständlich.
Code:
Private Sub Workbook_Open()
PT_aktualisieren
End Sub

Das in ein StandardModul (z.B. Modul1)
Code:
Sub PT_aktualisieren()
Dim ws As Worksheet
Dim pt As PivotTable
For Each ws In ThisWorkbook.Worksheets
If ws.PivotTables.Count Then
ws.Unprotect "pw" 'Passwort anpassen
For Each pt In ws.PivotTables
pt.RefreshTable
Next
ws.Protect "pw" 'Passwort anpassen
End If
Next
End Sub
Daher habe ich versucht diesen umzuschreiben und hin und her probiert, aber es funktioniert nicht.
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim ws As Worksheet
Dim pT As PivotTable
For Each ws In ThisWorkbook.Worksheets
If ws.ProtectContents = True Then
ws.Unprotect "pw"
For Each pT In ws.PivotTables
pT.RefreshTable
Next
ws.Protect "pw"
Else
pT.RefreshTable
End If
Next ws
End Sub
Könntet Ihr mir eventuell hierbei weiterhelfen?
Vielen Dank im Voraus!
VG

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivot mit Blattschutz
10.02.2021 08:50:02
Luschi
Hallo Julian,
Du mußt in eine Hilfsvariable (bei mir: xSchutz) den Blattchutzstatus vor dem Entsprerren
reinschreiben; und so sieht mein Makro aus:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim ws As Worksheet, pT As PivotTable, xSchutz As Boolean
''Sprungmarke bei Fehler
''wichtig, um Meldung anzuzeigen!
On Error GoTo Ende_Fehler
'Excel-Ereignis-Routinen abschalten
Application.EnableEvents = False
For Each ws In ThisWorkbook.Worksheets
''nur wenn die Tabelle PvT's besitzt
If ws.PivotTables.Count > 0 Then
'Blattschutz-Einstellung merken
xSchutz = ws.ProtectContents
If xSchutz Then
'nur wenn Blattschutz gesetzt, dann aufheben
ws.Unprotect "pw"
End If
For Each pT In ws.PivotTables
pT.RefreshTable
Next
If xSchutz Then
''Blattschutz setzen, wenn zuvor vorhanden!
ws.Protect "pw"
End If
End If
Next ws
GoTo Ende_Sub
Ende_Fehler:
MsgBox "Es ist ein Fehler aufgetreten!", 16 + vbMsgBoxSetForeground, _
"Fehler-Nr.: " & Err.Number
On Error GoTo 0
Ende_Sub:
''Standardeinstellung wieder setzen, egal ob Fehler oder nicht
Application.EnableEvents = True
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Pivot mit Blattschutz
10.02.2021 09:55:43
Julian
Hallo Luschi,
vielen vielen lieben Dank!!
Es funktioniert perfekt!! :-) :-) :-)
Riesiges Dankeschön und viele Grüße Julian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige