Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makro in geschützter Tabelle
#1
Hallo liebes Forum,

ich habe folgendes Problem: Ich habe in einer Tabelle insgesamt 3 Pivot Tabellen erstellt, die sich alle aus dem selben Arbeitsblatt speisen (zwei greifen sogar auf die selben Zellen zu).
Damit sich diese Tabellen angenehmer aktualisieren lassen, habe ich einen Button erstellt, der auf Knopfdruck ein Makro laufen lässt, das die Pivot Tabellen aktualisiert und dabei auch ein paar kosmetische Anpassungen von Zellfarbe und Schriftfarbe macht. Bis auf die Filterfunktionen der Pivot Tabelle soll dabei der Rest des Arbeitsblattes geschützt werden (nur ungeschützte Zellen sollen auswählbar sein).
Ohne geschütztes Arbeitsblatt läuft das Makro einwandfrei.  Wenn ich nun aber das Makro in einem geschützten Arbeitsblatt per Knopfdruck laufen lasse, bekomme ich folgende Antwort:

"Dieser Befehl kann nicht ausgeführt werden, während ein geschütztes Blatt einen anderen PivotTable Bericht enthält, der auf den selben Quelldaten basiert."
Die Fehlermeldung habe ich noch einmal unten angehängt.

Könnt ihr mir helfen, wie ich das Problem lösen kann?
Vielen Dank schon einmal an alle!

LG
Johnny


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2
allo,

Ergänze Dein Makro nach folgendem Muster


Code:
Sub DeinSub()
 ActiveSheet.Unprotect
 
 'Dein Code zum Aktuallisieren
 
 ActiveSheet.Protect
 
End Sub


Wenn Passwort geschützt dann so:

Code:
Sub DeinSub()
  ActiveSheet.Unprotect "deinPasswort"
 
  'Dein Code zum Aktuallisieren
 
  ActiveSheet.Protect "deinPasswort"
 
End Sub
Gruß Atilla
Antworten Top
#3
und Du mußt vielleicht gleichzeitig auch das Blatt freigeben, aus dem die Pivot die Daten bezieht oder das Blatt mit der anderen Pivot, wie die Fehlermeldung schon sagt:
"Dieser Befehl kann nicht ausgeführt werden, während ein geschütztes Blatt einen anderen PivotTable Bericht enthält, der auf den selben Quelldaten basiert."
Antworten Top
#4
Hat geklappt, genial! :D Vielen Dank euch beiden!
LG
Johnny
Antworten Top
#5
Hey,

ich habe leider doch noch ein kleines Problem entdeckt :( Und zwar klappt zwar jetzt das Aktualisieren der Pivot Tabellen, allerdings kann ich nach dem Aktualisieren die Filterfunktion nicht mehr anwählen. Ich müsste aber die Filter auch nach dem Aktualisieren noch bedienen können.
Ich habe schon in den Blatt-Schutz Funktionen die Option "PivotTable & PivotChart verwenden" aktiviert. Es funktioniert leider trotzdem nicht.
Habt ihr eine Idee?

LG
Johnny
Antworten Top
#6
Hi,

versuche mal dies hier

Code:
    ActiveSheet.Protect "deinPasswort", DrawingObjects:=True, Contents:=True, Scenarios:=True _

        , AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Userinterfaceonly:=True

Und ein  unprotect und Protect ist nicht notwendig....
Es reicht alleine die Zeile oben.
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#7
Hi Chris-ka,

das funktioniert leider nicht :( Ich kann noch immer nicht den Filter auswählen.

Hast du noch eine andere Idee?

LG
Johnny
Antworten Top
#8
Hi,

ungetestet

vielleicht geht es so

Code:
    ActiveSheet.Protect "deinPasswort", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Userinterfaceonly:=True
    ActiveSheet.EnableAutoFilter = True
    'dein weiterer Code
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#9
Hi,

danke für die schnelle Antwort, es geht leider immer noch nicht... So ein Mist :D Ich hänge mal den Code an, vielleicht hab ich ja einen Fehler gemacht. Der relevante Teil ist ganz unten. Ich kann z.B. kann nicht ":=" angeben, da wird mir angezeigt: "Fehler beim Kompilieren. Fehler in der Syntax".
Vielleicht liegt der Fehler ja dort.


Code:
Sub Pivot_refresh_colour_font()
ActiveSheet.Unprotect
'
' Pivot_refresh_colour_font Makro
'
'
    Range("C139").Select
    ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollRow = 126
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 1
    Range("Y3").Select
    ActiveSheet.PivotTables("PivotTable3").PivotCache.Refresh
    Range("Y3:Y79").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.149998474074526
    End With
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 1
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 41
    ActiveWindow.ScrollRow = 91
    ActiveWindow.ScrollRow = 116
    ActiveWindow.SmallScroll Down:=9
    Range("B139:B140").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 6299648
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    Selection.Font.Bold = True
    Range("F139:F140").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 6299648
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    Selection.Font.Bold = True
    Range("C139:C140").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.349986266670736
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Selection.Font.Bold = True
    Range("G139:G140").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = -0.349986266670736
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Selection.Font.Bold = True
    Rows("140:140").RowHeight = 15.6
    Rows("141:164").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Range("A141").Select
    Rows("140:140").RowHeight = 18.6
    Range("C139:C140").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
    Range("G139:G140").Select
    Selection.Locked = False
    Selection.FormulaHidden = False
   [b] ActiveSheet.Protect[/b]
[b]    DrawingObjects = True[/b]
[b]    Contents = True[/b]
[b]    Scenarios = True[/b]
[b]    Userinterfaceonly = True[/b]
[b]    AllowSorting = True[/b]
[b]    AllowFiltering = True[/b]
[b]    AllowUsingPivotTables = True[/b]
[b]   ActiveSheet.EnableAutoFilter = True[/b]
End Sub

LG
Johnny
Antworten Top
#10
Hi,

Zitat:Und ein  unprotect und Protect ist nicht notwendig....

Es reicht alleine die Zeile oben.
Nicht ans Ende stellen!
Code:
Sub Pivot_refresh_colour_font()
    ActiveSheet.Protect "deinPasswort", DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True, AllowUsingPivotTables:=True, Userinterfaceonly:=True
    ActiveSheet.EnableAutoFilter = True
   Sub Pivot_refresh_colour_font()
ActiveSheet.Unprotect
'
' Pivot_refresh_colour_font Makro
'
'
    Range("C139").Select
    ActiveSheet.PivotTables("PivotTable2").PivotCache.Refresh
'......
'.......
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste