Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zelleninhalte schützen, aber per VBA änderbar?

Forumthread: Zelleninhalte schützen, aber per VBA änderbar?

Zelleninhalte schützen, aber per VBA änderbar?
31.01.2007 11:48:42
Uwe
Hallo zusammen,
ich möchte gerne das Blatt teilweise gegen Änderungen schützen, aber dennoch Änderungen per VBA zulassen. Konkreter Fall:
1. Einige Felder des Blattes dürfen verändert werden, alle anderen sind mit dem Blattschutz versehen, zugelassen sind nur "Gesperrte/Nicht gesperrte Zellen auswählen".
2. Über ein VBA-Makro werden Teilbereiche (Spalten, Zeilen) automatisch aus-/eingeblendet, über ein anderes Makro die Formatierung einiger Zellen verändert (Hintergrundfarbe von weiß auf rot).
Ich bekomme z.B. den Runtime Error 1004 (Hidden-Eigenschaft) wenn das Makro versucht, geschützte Zellen zu verändern.
Wie kann ich den Schutz für den Anwender beibehalten, aber im VBA zulassen?
Grüße von
Uwe
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelleninhalte schützen, aber per VBA änderbar?
31.01.2007 11:51:35
ChrisL
Hallo Uwe
Im Makro einfach den Schutz temporär aufheben z.B.
ActiveSheet.Unprotect
' Dein Makro
ActiveSheet.Protect
Gruss
Chris
AW: Zelleninhalte schützen, aber per VBA änderbar?
31.01.2007 11:51:58
Dr.
Hi,
am Anfang des Codes die betreffenden Sheets entsperren und am Ende wieder sperren.
AW: Zelleninhalte schützen, aber per VBA änderbar?
31.01.2007 13:33:10
haw
Hallo Uwe,
aus der Hilfe zu Protect:
UserInterfaceOnly Optionaler Variant-Wert. Wenn True, wird die Benutzeroberfläche, jedoch keine Makros geschützt. Ohne Angabe dieses Arguments gilt der Schutz für Makros und die Benutzeroberfläche.
z.B.
ActiveSheet.Protect UserInterfaceOnly = True
Damit kannst du mit Makros verändern, nicht jedoch in der Tabelle.
Gruß Heinz
Anzeige
@haw: kleine Korrektur,...
31.01.2007 14:24:51
Luc:-?
...Heinz.
Die Hilfe ist hier missverständlich...
Wenn True, wird die Benutzeroberfläche, jedoch keine Makros geschützt sollte besser "wenn True, wird die Benutzeroberfläche geschützt, Änderungen mithilfe von Makros sind aber möglich". Makros wdn dadurch nicht geschützt. Das geschieht durch Passwortvergabe im Editor.
Gruß Luc :-?
Anzeige
AW: Zelleninhalte schützen, aber per VBA änderbar?
31.01.2007 15:23:49
Uwe
Die Kombination mit Protect/Unprotect habe ich probiert:
Worksheets("name").Unprotect ("password")
'Makro
Worksheets("name").Protect ("password")
Allerdings flackert jedes Mal wenn diese Kombination "drankommt" kurz das Worksheet.
Ich vermute, dass bei mehreren Sheets von Excel die Sheets umgeschaltet werden. Wirkt leider sehr unsauber für den User.
"Protect UserInterface Only" muss ich noch testen. Reicht das, wenn es nur einmal beim
Laden/Öffnen des Worksheets ausgeführt wird ?
Grüße von
Uwe
Anzeige
Ja, du musst den Schutz für das Arbeitsblatt...
31.01.2007 17:11:17
Luc:-?
...per Workbook_Open-Ereignis setzen, Uwe.
Dann flackert auch nichts. .UnProtect /.Protect ist die schlechtere Wahl!
Übrigens kannst du Bildschirmflackern mit .ScreenUpdating Aus-/Einschalten verhindern.
Gruß Luc :-?
Alles klar!
01.02.2007 08:49:50
Uwe
Klappt prima, alles bestens!
Vielen Dank an alle!
Grüße von
Uwe
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zelleninhalte schützen und dennoch per VBA ändern


Schritt-für-Schritt-Anleitung

Um Zellen in Excel zu schützen, aber dennoch Änderungen über VBA zuzulassen, kannst du die folgenden Schritte befolgen:

  1. Blattschutz aktivieren: Um den Blattschutz zu aktivieren, gehe zu „Überprüfen“ und dann auf „Blatt schützen“. Achte darauf, die Option „Gesperrte/Nicht gesperrte Zellen auswählen“ zu aktivieren.

  2. VBA-Makro erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues Modul. Füge den folgenden Code ein:

    Sub BeispielMakro()
       ' Arbeitsblatt entsperren
       ActiveSheet.Unprotect "password"
    
       ' Deine VBA-Anweisungen hier
    
       ' Arbeitsblatt wieder schützen
       ActiveSheet.Protect "password"
    End Sub
  3. UserInterfaceOnly aktivieren: Um sicherzustellen, dass der Blattschutz für die Benutzeroberfläche gilt, aber nicht für Makros, kannst du den folgenden Code in das Workbook_Open-Ereignis einfügen:

    Private Sub Workbook_Open()
       ActiveSheet.Protect UserInterfaceOnly:=True
    End Sub
  4. ScreenUpdating verwenden: Um das Bildschirmflackern zu vermeiden, kannst du .ScreenUpdating auf False setzen, bevor du die Änderungen vornimmst und danach wieder auf True setzen.

    Application.ScreenUpdating = False
    ' Deine VBA-Anweisungen hier
    Application.ScreenUpdating = True

Häufige Fehler und Lösungen

  • Runtime Error 1004: Dieser Fehler tritt auf, wenn du versuchst, geschützte Zellen zu ändern. Stelle sicher, dass du das Arbeitsblatt mit ActiveSheet.Unprotect entsperrst, bevor du Änderungen vornimmst.

  • Flackern des Bildschirms: Wenn der Bildschirm flackert, kannst du dies mit Application.ScreenUpdating = False verhindern, wie oben beschrieben.


Alternative Methoden

Wenn du eine andere Methode anstelle von VBA verwenden möchtest, kannst du auch die Zellen formatieren, sodass nur bestimmte Zellen bearbeitet werden können, während der Rest geschützt bleibt. Gehe dazu auf „Zellen formatieren“ und wähle die entsprechenden Optionen.


Praktische Beispiele

Hier sind einige Beispiele, wie du den Blattschutz mit VBA kombinieren kannst:

  • Einzelne Zelle entsperren:

    Worksheets("Sheet1").Range("A1").Locked = False
  • Spalte entsperren:

    Worksheets("Sheet1").Columns("B").Locked = False

Diese Beispiele zeigen, wie du gezielt Zellen oder Bereiche für die Bearbeitung freigeben kannst.


Tipps für Profis

  • Passwortschutz: Denke daran, dass der Blattschutz mit einem Passwort versehen werden kann, um unbefugte Änderungen zu verhindern.

  • Benutzerspezifische Freigaben: Überlege, welche Benutzer auf welche Zellen zugreifen sollen. Dies kann durch gezielte Zugriffsrechte in den VBA-Makros gesteuert werden.


FAQ: Häufige Fragen

1. Reicht es, UserInterfaceOnly einmal beim Öffnen des Worksheets zu setzen? Ja, du musst UserInterfaceOnly nur einmal setzen, idealerweise im Workbook_Open-Ereignis.

2. Was kann ich tun, wenn ich den Blattschutz in mehreren Makros benötige? Du kannst den Blattschutz am Anfang jedes Makros temporär aufheben und am Ende wieder aktivieren, um die gewünschten Änderungen vorzunehmen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige