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

Forumthread: Schreibschutz - schreiben Ja, löschen Nein

Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 15:57:36
thema
Hallo liebe EXCEL-Experts!
gibt es eine Möglichkeit, ein Tabellenblatt/Zellen oder eine ganze Datei
für's SCHREIBEN frei zu geben
für's LÖSCHEN zu sperren?
Falls dies nicht möglich ist(wovon ich ausgehe), könnte ich mir folgendes vorstellen:
jede gefüllte Zeile wird gesperrt (z.B. beim Speichern)
jede freie Zeile bleibt erst mal zum Schreiben frei
d.h. der Benuzter soll beim Öffnen immer nur in die nächste leere Zeile schreiben dürfen.
So stelle ich es mir vor - aber wie das geht, davon habe ich leider keine Ahnung und danke deshalb allen, die hier ihre Ideen/Vorschläge beisteuern könnten.
Grüße
TheMa
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 17:19:48
Matthias
Hallo Thema,
das ist schon machmar, es muss allerdings definiert werden, welche "die nächste leere Zeile" ist:

  • Durch Eintrag in welche Spalte wird die Zelle als "belegt" definiert?
  • Wenn oberhalb Zeilen frei sind, dürfen diese dann beschrieben werden?
  • Ist gewährleistet, dass die Datei mit aktivierten Makros geöffnet wird? (Sonst hat das nämlich keinen Sinn)

Gruß Matthias
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 17:35:51
thema
Hallo Matthias,
d.h. nur mit VBA kann's funktionieren?
Zu deinen Fragen:
- Die Bedingung für "belegt" muss/kann ich selbst festlegen
Z.B. Einträge von A bis G müssen in Spalte H mit einem Eintrag abgeschlossen werden,
so könnte man z.B. die Zellen in H auf gefüllt/leer abfragen
- Somit wären auch leere Zeilen "oberhalb" frei gegeben,
aber ich kann das selbst bestimmen, d.h. ich würde bevorzugen, dass nur
Zellen "unterhalb" zum Schreiben frei gegeben sind
- Ich gehe davon aus, dass VBA möglich ist
Also, wenn's unter diesen Bedingungen eine Lösung gibt: Vielen Dank. (Auch wenn ich leider in VBA nicht fit bin, es könnte mir vielleicht dann der Kollege weiter helfen).
Danke im voraus
und Grüße
TheMa
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 18:14:01
Matthias
Hallo Thema,
VB-Editor öffnen mit Alt+F11, dann links Doppelklick auf "DieseArbeitsmappe", dann rechts diesen Code einfügen:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ZeilenSchützen
End Sub

dann Menü Einfügen, Modul, ins erscheinende Codefenster dann diesen Code kopieren:

Sub ZeilenSchützen()
Const pw = "123" 'Blattschutz-Kennwort (bitte anpassen)
Const Tabelle = "Tabelle1" 'Tabellenname (bitte anpassen)
Dim lz As Long, z As Long
With Sheets(Tabelle)
'letzte gefüllte Zeile ermitteln:
lz = .Cells(Rows.Count, 8).End(xlUp).Row
.Unprotect Password:=pw
Range("1:" & lz).Locked = True
Range(lz + 1 & ":" & Rows.Count).Locked = False
.Protect Password:=pw
End With

Da das Blattschutzkennwort im Code steht musst du diesen noch vor fremden Blicken schützen:
Menü Extras, Eigenschaften von VBProject, Reiter "Schutz", Haken bei "Projekt für die Anzeige sperren", unten noch ein Kennwort vergeben und nicht vergessen.
Dann kannst du den VB-Editor wieder schließen und die Datei speichern. Bei jedem Speichern werden die benutzten Zeilen gesperrt.
Viel Erfolg,
Matthias
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 18:35:49
Thema
Hallo Matthias,
erst mal vielen Dank für die schnelle Rückmeldung.
Nach deiner Beschreibung sollte das Skript genaut das tun, was von meiner Datei gefordert wird.
Aber leider funktioniert es nicht:
Nach dem erneuten Laden der Datei kann ich munter auch beschriebene Zellen überschreiben?
Hm, mache ich etwas falsch? Ich denke, das Einbinden des Makros habe ich richtig gemacht.
(Das mit dem Passwort vor fremden Blicken schützen, habe ich zunächst mal weg gelassen).
Darf ich dir die Test-Datei schicken...
https://www.herber.de/bbs/user/36047.xls
Vielleicht kannst du dann sehen, wo's bei mir hakt.
Danke!
Gruss Thema
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 18:56:33
Matthias
Hallo Thema,
es geht um diese Zeile hier:

'letzte gefüllte Zeile ermitteln:
lz = .Cells(Rows.Count, 8).End(xlUp).Row

die 8 bedeutet "H", d.h. es wird nach der letzten gefüllten Zelle in Spalte H gesucht. In deinem Besispiel müsstest du die 8 in 3 ändern (Spalte C).
Gruß Matthias
Anzeige
AW: Schreibschutz - schreiben Ja, löschen Nein
22.08.2006 19:03:27
thema
Hallo Matthias,
ja richtig, ich hatte ja diese Vorgabe gemacht mit der Abfrage auf Spalte H.
Auf jeden Fall ist deine Lösung super und ich sage ganz vielen Dank!
Grüße TheMa

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Schreibschutz in Excel: Schreiben Ja, Löschen Nein


Schritt-für-Schritt-Anleitung

Um in Excel Zellen zu schützen, sodass sie nicht gelöscht, aber beschrieben werden können, befolge diese Schritte:

  1. Öffne den VB-Editor: Drücke Alt + F11.

  2. Finde die Arbeitsmappe: Klicke doppelt auf "DieseArbeitsmappe" im Projektfenster.

  3. Füge den folgenden Code ein:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       ZeilenSchützen
    End Sub
  4. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul und füge diesen Code ein:

    Sub ZeilenSchützen()
       Const pw = "123" ' Blattschutz-Kennwort (bitte anpassen)
       Const Tabelle = "Tabelle1" ' Tabellenname (bitte anpassen)
       Dim lz As Long
       With Sheets(Tabelle)
           lz = .Cells(Rows.Count, 8).End(xlUp).Row ' Suche nach der letzten gefüllten Zeile in Spalte H
           .Unprotect Password:=pw
           Range("1:" & lz).Locked = True
           Range(lz + 1 & ":" & Rows.Count).Locked = False
           .Protect Password:=pw
       End With
    End Sub
  5. Blattschutz-Kennwort schützen: Gehe zu Extras > Eigenschaften von VBProject, aktiviere "Projekt für die Anzeige sperren", und vergib ein Passwort.

  6. Schließe den VB-Editor und speichere die Datei.

Jetzt kannst du in Excel schreiben, aber das Löschen von Zellen wird verhindert.


Häufige Fehler und Lösungen

  • Fehler: Nach dem Speichern können Zellen überschrieben werden.

    • Lösung: Stelle sicher, dass der Code korrekt eingefügt wurde. Überprüfe auch, ob die richtige Spalte für die letzte gefüllte Zeile verwendet wird (z.B. 8 für Spalte H).
  • Fehler: Zellen erscheinen ausgegraut.

    • Lösung: Dies kann passieren, wenn der Blattschutz nicht korrekt aktiviert wurde. Überprüfe deine Passwort- und Schutz-Einstellungen.

Alternative Methoden

Falls VBA nicht für dich geeignet ist, kannst du auch die folgenden Methoden ausprobieren:

  1. Zellen formatieren: Wähle die Zellen, die nicht gelöscht werden sollen, und setze den Blattschutz (über Überprüfen > Blatt schützen).
  2. Datenüberprüfung: Nutze die Datenüberprüfung, um zu verhindern, dass Benutzer unerwünschte Werte in bestimmten Zellen eingeben.

Praktische Beispiele

Angenommen, du möchtest in einer Excel-Tabelle die Zeilen 1 bis 10 schützen, aber das Schreiben in Zeile 11 erlauben:

  1. Füge den oben genannten VBA-Code in den VB-Editor ein.
  2. Ändere die Zeile lz = .Cells(Rows.Count, 8).End(xlUp).Row so, dass sie die letzte gefüllte Zeile in deiner gewünschten Spalte überprüft.

Jetzt kannst du in Zeile 11 schreiben, während die vorherigen Zeilen geschützt sind.


Tipps für Profis

  • Dynamische Bereiche: Verwende benannte Bereiche, um dynamisch auf die letzte gefüllte Zeile zuzugreifen.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme zu vermeiden.
  • Regelmäßige Sicherung: Speichere deine Excel-Datei regelmäßig, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Kann ich in Excel Zellen nicht löschbar machen?
Ja, du kannst Zellen durch Blattschutz und VBA so einstellen, dass sie nicht gelöscht werden können.

2. Warum kann ich in meine geschützten Zellen nicht schreiben?
Überprüfe, ob der Blattschutz korrekt konfiguriert ist und ob du die richtige Spalte für die letzte gefüllte Zeile angegeben hast.

3. Wie kann ich eine Excel-Datei vor dem Löschen schützen?
Verwende den Blattschutz und VBA, um sicherzustellen, dass die Zellen zwar beschrieben, aber nicht gelöscht werden können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige