Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
892to896
892to896
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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!

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige