Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellinhalte löschen verhindern

Forumthread: Zellinhalte löschen verhindern

Zellinhalte löschen verhindern
03.08.2007 17:13:45
Benschi
Hi,
Wie kann - ohne Blattschutz - ein gewisser Bereich mit VBA geschützt werden? Eine Lösung war:

Private Sub Worksheet_Change(ByVal Target As Range)
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End Sub


Die ist eigentlich super, nur ist damit das gesamte Blatt für Änderungen gesperrt. Ich möchte aber nur ein gewisser Bereich und zudem die Möglichkeit, die Sperre mittels Makro kurzfristig auch wieder aufzuheben. Etwas kompliziert, ich weiss... :-)
Vielen Dank bereits!
Benschi
NB: das Anwählen der Zellen ist gestattet, nur Löschen sollten die User nichts!

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellinhalte löschen verhindern
03.08.2007 19:27:00
Oberschlumpf
Hi name?
Tausch deinen Code gegen diesen hier aus:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lbMsg As Byte
If Not Intersect(Target, Range("gewisser Bereich")) Is Nothing Then
If Target.Value = "" Then
lbMsg = MsgBox("Löschen eines Wertes in diesem Bereich nicht erlaubt!",  _
vbExclamation, "unerlaubter Zugriff")
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End Sub


Für "gewisser Bereich" musst du eben den Bereich eingeben, den du "überwachen" willst.
Dieser Code wurde getestet für die ersten 20 Zeilen in Spalte A und funktioniert.
Konnte ich helfen?
Ciao
Thorsten

Anzeige
AW: Zellinhalte löschen verhindern
03.08.2007 19:43:00
Herbert
Hi,
das geht ins Hemdchen, wenn mehrere Zellen markiert und gelöscht werden!
Ein Range kann keinen Value haben.
mfg Herbert

AW: Zellinhalte löschen verhindern
03.08.2007 23:23:00
Oberschlumpf
Hi Herbert
Mit dieser Korrektur sollte es nun funktionieren:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lbMsg As Byte, liIndex As Integer
If Not Intersect(Target, Range("gewisser Bereich")) Is Nothing Then
If InStr(1, Target.Address, ":") > 0 Or InStr(1, Target.Address, ",") > 0 Then
For liIndex = 1 To Target.Count
If Target(liIndex).Value = "" Then
lbMsg = MsgBox("Löschen eines Wertes in diesem Bereich nicht  _
erlaubt!", vbExclamation, "unerlaubter Zugriff")
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
Exit For
End If
Next
Else
If Target.Value = "" Then
lbMsg = MsgBox("Löschen eines Wertes in diesem Bereich nicht erlaubt!",  _
vbExclamation, "unerlaubter Zugriff")
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
End If
End If
End If
End Sub


Ein mehrzelliger Range hat auch Values, und zwar so viele wie markierte Zellen.
Die hier umgebrochene MsgBox-Zeile kann im Code in einer Zeile stehen - dieses Forum mag überlange Zeilen nicht, deswegen der Zeilenumbruch.
Hilft es denn nun weiter?
Ciao
Thorsten

Anzeige
AW: Zellinhalte löschen verhindern
07.08.2007 10:49:19
Benschi
Sorry für das fehlende Dankeschön.
Natürlich war das genau die Antwort, die ich gesucht habe! Nach einiger Frusttration über ungelungene Aktionen, war das der Aufsteller. War wohl etwas zu sehr mit dem weiterbasteln beschäftigt.
Also Merci! und bis zu den nächsten Hindernissen! :-)
Benschi
Anzeige
;

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