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