Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1716to1720
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
Inhaltsverzeichnis

Zellen Sperren mit Worksheet_Change

Zellen Sperren mit Worksheet_Change
09.10.2019 11:52:44
EasyD
Hallo zusammen,
habe schon langen nicht mehr hier fragen müssen, bei folgender Nummer bekomme ich aber den buchstäblichen Knoten in den Kopf.
Ich habe einen Zellbereich in den Spalten E bis G.
Mein Ziel ist es, dass nur in einer der 3 Spalten des Bereiches Werte erfasst werden dürfen. Sobald Werte erfasst werden, sollen eventuelle Eintragungen in den anderen beiden Spalten gelöscht werden und die Zellen gesperrt werden. Klang eigentlich einfach...
Problem mit dem unten stehenden Code - er löscht mir Eintragungen (egal in welcher Spalte) immer sofort wieder raus. Dürfte ja aber eigentlich m.E. nicht passieren wenn ich das Ereignis immer davon abhängig mache, in welcher Spalte ich mich bewege oder?
(was Protect_on/off macht dürfte klar sein)
Danke für's drüber schauen! Ich kapier gerade nicht wo ich den falschen Haken schlage....
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellsE As Range
Dim CellsF As Range
Dim CellsG As Range
Call Protect_off
'Zellbereiche definieren
Set CellsE = Range("E77:E81")
Set CellsF = Range("F77:F81")
Set CellsG = Range("G77:G81")
'In der Ausgangslage alle 3 Spalten entsperren, damit in jeder Spalte Eintragungen
'vorgenommen werden können. Erst sobald eine Spalte bearbeitet wird, startet der Code
CellsE.Locked = False
CellsF.Locked = False
CellsG.Locked = False
'Wenn Änderungen in Spalte E:
If Not Application.Intersect(CellsE, Range(Target.Address)) _
Is Nothing Then
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
End If
'Wenn Änderungen in Spalte F:
If Not Application.Intersect(CellsF, Range(Target.Address)) _
Is Nothing Then
CellsE.ClearContents
CellsG.ClearContents
CellsE.Locked = True
CellsG.Locked = True
End If
'Wenn Änderungen in Spalte G:
If Not Application.Intersect(CellsG, Range(Target.Address)) _
Is Nothing Then
CellsE.ClearContents
CellsF.ClearContents
CellsE.Locked = True
CellsF.Locked = True
End If
Call Protect_on
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen Sperren mit Worksheet_Change
09.10.2019 12:02:59
Werner
Hallo,
setz mal vor jedem Block mit Zelländerungen ein Application.EnbleEvents = False und danach wieder ein Application.EnableEvents = True.
So wie du es jetzt hast, wird durch das Leeren des anderen Zellbereichs dessen Event ja auch ausgelöst.
If Not Application.Intersect(CellsE, Range(Target.Address)) _
Is Nothing Then
Application.EnableEvents = False
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
Application.EnableEvents = True
End If
Gruß Werner
AW: Zellen Sperren mit Worksheet_Change
09.10.2019 14:30:47
EasyD
Hallo Werner
erstmal Danke vorab!
Hab's probiert - Ergebnis "Objekt unterstützt diese Eigenschaft oder Methode nicht"
Entweder so:
'Wenn Änderungen in Spalte E:
If Not Application.Intersect(CellsE, Range(Target.Address)) _
Is Nothing Then
Application.EnbleEvents = False
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
Application.EnbleEvents = True
End If
Oder auch so:
'Wenn Änderungen in Spalte E:
Application.EnbleEvents = False
If Not Application.Intersect(CellsE, Range(Target.Address)) _
Is Nothing Then
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
End If
Application.EnbleEvents = True
Anzeige
AW: Zellen Sperren mit Worksheet_Change
09.10.2019 15:16:05
Werner
Hallo,
und wo kommt denn diese Fehlermeldung?
Kann ich nicht nachvollziehen, bei mir nicht.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim CellsE As Range, CellsF As Range, CellsG As Range
'hier noch eine Beschränkung, sonst wird bei jeder
'Zelländerung, egal wo auf dem Blatt, der Blattschutz
'rausgenommen und wieder gesetzt
If Target.Column  7 Then Exit Sub
If Target.Row  81 Then Exit Sub
Call Protect_off
'Zellbereiche definieren
Set CellsE = Range("E77:E81")
Set CellsF = Range("F77:F81")
Set CellsG = Range("G77:G81")
'In der Ausgangslage alle 3 Spalten entsperren, damit
'in jeder Spalte Eintragungen vorgenommen werden können.
'Erst sobald eine Spalte bearbeitet wird, startet der Code
CellsE.Locked = False
CellsF.Locked = False
CellsG.Locked = False
'Wenn Änderungen in Spalte E:
If Not Intersect(CellsE, Target) Is Nothing Then
Application.EnableEvents = False
CellsF.ClearContents
CellsG.ClearContents
CellsF.Locked = True
CellsG.Locked = True
Application.EnableEvents = True
End If
'Wenn Änderungen in Spalte F:
If Not Intersect(CellsF, Target) Is Nothing Then
Application.EnableEvents = False
CellsE.ClearContents
CellsG.ClearContents
CellsE.Locked = True
CellsG.Locked = True
Application.EnableEvents = True
End If
'Wenn Änderungen in Spalte G:
If Not Intersect(CellsG, Target) Is Nothing Then
Application.EnableEvents = False
CellsE.ClearContents
CellsF.ClearContents
CellsE.Locked = True
CellsF.Locked = True
Application.EnableEvents = True
End If
Call Protect_on
Set CellsE = Nothing: Set CellsF = Nothing: Set CellsG = Nothing
End Sub
Gruß Werner
Anzeige
AW: Zellen Sperren mit Worksheet_Change
09.10.2019 15:25:12
EasyD
Äääähhhmmm.... ich hab keine Ahnung!
läuft jetzt! Danke!
Der Fehler kam hier:
If Not Intersect(CellsE, Target) Is Nothing Then
Application.EnableEvents = False
Hab deinen kompletten Code reinkopiert und dann ging es ohne Fehler durch.... *grübel*
Gerne u. Danke für die Rückmeldung. o.w.T.
09.10.2019 15:26:11
Werner

83 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige