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

Blattschutz mit UserInterfaceOnly

Forumthread: Blattschutz mit UserInterfaceOnly

Blattschutz mit UserInterfaceOnly
Sebastian
Hallo,
ich habe eine Excel-Arbeitsmappe, die ich gerne in VBA schützen würde. Dabei möchte ich aber trotzdem die Blätter mit Makros verändern können.
Dass das ganze über sheets.protdect userinterfaceonly:=true funktionieren soll, weiß ich bereits u.A. aus der Hilfe.
Allerdings funktionert der userinterfaceonly-Ausdruck nicht. Auch im Objektkatalog ist dieser Ausdruck nicht hinterlegt.
Jetzt also meine Frage, was ich machen muss, damit ich den userinterfaceonly-Ausdruck verwenden kann?
Danke schonmal.
Gruß
Anzeige
AW: Blattschutz mit UserInterfaceOnly
06.05.2011 15:32:17
Josef

Hallo Sebastian,
warum soll das nicht funktionieren?
Sheets("Tabelle1").Protect Password:="passwort", UserInterfaceOnly:=True


« Gruß Sepp »

Anzeige
AW: Blattschutz mit UserInterfaceOnly
06.05.2011 18:50:56
Sebastian

warum soll das nicht funktionieren?
Sheets("Tabelle1").Protect Password:="passwort", UserInterfaceOnly:=True
Wenn ich das wüsste, würde ich nicht fragen.
UserInterfaceOnly ist bei mir eben auch nicht in der Objektbibliothek vorhanden...
siehst du den Unterschied?
06.05.2011 19:08:31
robert
sheets.protdect -dein Code
Sheets("Tabelle1").Protect usw....
gruß
robert
Anzeige
das ist ihm ja scheinbar egal ... kwT
06.05.2011 20:18:43
Matthias
AW: Blattschutz mit UserInterfaceOnly
07.05.2011 08:53:39
Nepumuk
Hallo,
UserInterfaceOnly ist ein Parameter der Protect-Methode. Wenn du dir die Methode im Katalo ansiehst findest du auch diesen Parameter. Aber grundsätzlich sind Parameter nicht einzeln im Katalog aufgelistet.
Gruß
Nepumuk
AW: Blattschutz mit UserInterfaceOnly
09.05.2011 07:47:04
Sebastian
Hallo,
also das mit dem Tippfehler war nur hier im Forum...im Programmcode hab ich das Protect richtig geschrieben...
Und trotzdem funktioniert UserInterfaceOnly nicht.
Im Normalfall werden die Befehle ja auch nachdem man die Zeile ändert von der Groß-/Kleinschreibung so angepasst. Wenn ich userinterfaceonly eingebe bleibt das aber so, was für mich wieder heißt, dass dieser Ausdruck nicht bekannt ist...
Also hat vielleicht noch jemand einen Vorschlag, was das Problem sein könnte außer der Rechtschreibung?
Danke.
Anzeige
hast Du das schon mal mit einer anderen ...
09.05.2011 09:47:40
Matthias
... Datei probiert, Sebastian ?
Vielleicht ist ja Deine Mappe defekt.
Grundsätzlich funktioniert das nämlich ohne Probleme


Kopiere mal den Code in eine neue Mappe in ein Modul
Sub MyCode()
ActiveSheet.Protect "passwort", UserInterfaceOnly:=True
End Sub
Jetzt einfach mal den Code ausführen
Dannach die Datei speichern !
Jetzt Datei neu öffnen und probieren, ob Du eine Zelle ändern kannst (dürfte nicht gehen, da Blatt geschützt ist)
Im VBE öffnest du nun das Direktfenster mit Strg+G
Dort gibst Du einfach mal folgende Zeile ein:
ActiveCell="Hallo"
nun mit Enter abschließen. Nun müsste in der aktiven Zelle das Wort Hallo stehen.
Userbild
Wenn das nicht funktioniert,
dann lad doch mal eine Beispielmappe hoch in der das nach Deiner Meinung nicht geht.
Userbild
Anzeige
AW: hast Du das schon mal mit einer anderen ...
09.05.2011 10:32:41
Sebastian
Also der Blattschutz wird gesetzt, aber ich kann auch mit VBA nichts mehr an der Mappe ändern...sprich die UserInterfaceOnly:=True Anwendung funktioniert nicht .
Der Link zu einer neu erstellten Test-Arbeitsmappe:

Die Datei https://www.herber.de/bbs/user/74731.xls wurde aus Datenschutzgründen gelöscht


Gruß
Anzeige
so gehts ...
09.05.2011 11:00:54
Matthias
Hallo
Benutze einfach das Workbook_Open-Ereignis:
Private Sub Workbook_Open()
ActiveSheet.Protect "passwort", UserInterfaceOnly:=True
End Sub
https://www.herber.de/bbs/user/74735.xls
Userbild
Anzeige
AW: so gehts ...
09.05.2011 12:32:23
Sebastian
Also danke erstmal für deine Hilfe.
Leider klappt das bei mir trotzdem nicht. Außerdem sollte es doch keinen Einfluss darauf haben, ob der Protect-Befehl in der Workbook-Open-Anweisung oder sonst wo steht...?
Es ist eben einfach immernoch so, dass das userinterfaceonly bei mir nicht als Anweisung erkannt wird. Muss ich dafür vielleicht noch irgendwo in den Optionen oder irgendwo bestimmte Einstellungen vornehmen, damit bestimmte Befehle in VBA funktionieren?
Anzeige
AW: so gehts ...
09.05.2011 12:54:31
Reinhard
Hallo Sebastian,
es ist korrekt, erkennt der Editor ein Wort so stellt er er in der bekannten Schreibweise dar.
Dies gilt aber nicht 100,00 %-ig
z.B. das "destination" in
.Copy destination:=wks2.range("A1")
wird nur seltenst umgewandelt. Daß dein "userinterfaceonly" nicht umgewandelt wird ist also KEIN eindeutiger Beweis daß der Editor "userinterfaceonly" nicht kennt.
Gruß
Reinhard
Anzeige
protdect = protect ! kwT
06.05.2011 15:34:17
Matthias
;
Anzeige
Anzeige

Infobox / Tutorial

Blattschutz mit UserInterfaceOnly in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Arbeitsmappe und gehe in den Visual Basic for Applications (VBA) Editor (drücke ALT + F11).

  2. Erstelle ein neues Modul: Rechtsklicke im Projektfenster, wähle „Einfügen“ und dann „Modul“.

  3. Füge den folgenden Code ein:

    Sub SchützeBlatt()
       ActiveSheet.Protect Password:="dein_passwort", UserInterfaceOnly:=True
    End Sub
  4. Führe das Makro aus: Klicke auf „Run“ (oder drücke F5), um das Makro auszuführen.

  5. Speichere die Datei und schließe sie.

  6. Öffne die Datei erneut. Der Blattschutz sollte aktiv sein, aber Makros sollten weiterhin Änderungen am Blatt vornehmen können.


Häufige Fehler und Lösungen

  • Fehler: userinterfaceonly wird nicht erkannt.

    • Lösung: Stelle sicher, dass du UserInterfaceOnly genau so schreibst. Achte auf die Groß- und Kleinschreibung.
  • Fehler: Änderungen mit Makros sind nicht möglich, obwohl UserInterfaceOnly gesetzt ist.

    • Lösung: Stelle sicher, dass du das Makro im Workbook_Open-Ereignis platzierst, damit der Schutz bei jedem Öffnen der Arbeitsmappe gesetzt wird:
    Private Sub Workbook_Open()
       ActiveSheet.Protect Password:="dein_passwort", UserInterfaceOnly:=True
    End Sub

Alternative Methoden

  • Verwendung von ThisWorkbook: Du kannst den Schutz auch auf alle Blätter in der Arbeitsmappe anwenden:

    Private Sub Workbook_Open()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           ws.Protect Password:="dein_passwort", UserInterfaceOnly:=True
       Next ws
    End Sub
  • Direktes Einfügen in Excel: Du kannst auch Excel-Funktionen verwenden, um vorübergehende Blattschutzoptionen zu setzen, aber für UserInterfaceOnly ist VBA notwendig.


Praktische Beispiele

Hier ist ein Beispiel für das Setzen von Blattschutz mit UserInterfaceOnly in einer neuen Arbeitsmappe:

  1. Erstelle eine neue Arbeitsmappe.

  2. Füge im VBA-Editor den folgenden Code in ein Modul ein:

    Sub BeispielUserInterfaceOnly()
       ActiveSheet.Protect Password:="mein_passwort", UserInterfaceOnly:=True
    End Sub
  3. Speichere die Datei und führe das Makro aus. Teste, ob du mit VBA Änderungen vornehmen kannst, während der Blattschutz aktiv ist.


Tipps für Profis

  • Speichere regelmäßig: Achte darauf, deine Arbeitsmappe regelmäßig zu speichern, insbesondere nach Änderungen am VBA-Code.
  • Verwende Kommentare im Code: Das Hinzufügen von Kommentaren kann dir helfen, den Überblick über die Funktionalität deiner Makros zu behalten.
  • Teste in einer Testumgebung: Bevor du den Code in einer produktiven Datei anwendest, teste ihn in einer separaten Arbeitsmappe.

FAQ: Häufige Fragen

1. Warum funktioniert UserInterfaceOnly nicht bei mir? Es kann sein, dass der Code nicht im richtigen Kontext ausgeführt wird. Stelle sicher, dass er im Workbook_Open-Ereignis oder einem ähnlichen Kontext platziert ist.

2. Kann ich UserInterfaceOnly für mehrere Blätter gleichzeitig verwenden? Ja, du kannst eine Schleife verwenden, um den Schutz für alle Blätter in einer Arbeitsmappe zu setzen, wie im Abschnitt „Alternative Methoden“ beschrieben.

3. Gibt es Einschränkungen bei der Verwendung von UserInterfaceOnly? UserInterfaceOnly funktioniert nur, solange die Arbeitsmappe geöffnet ist. Du musst den Blattschutz jedes Mal setzen, wenn die Datei geöffnet wird.

4. Was kann ich tun, wenn mein Excel VBA Code nicht funktioniert? Überprüfe auf Tippfehler, stelle sicher, dass die Syntax korrekt ist und dass du in der richtigen Arbeitsmappe arbeitest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige