Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Bestimmte Zellen nach Eingabe sperren

Bestimmte Zellen nach Eingabe sperren
03.06.2014 07:14:36
Philipp
Guten Morgen,
ich bin ein Neuling in Sachen VBA. In einer Tabelle (mehrere Benutzer) gibt es bei mir einen Bereich von Spalte Q bis V, in dem Bemerkungen vorgenommen werden können. Nun hätte ich folgendes gerne umgesetzt:
In Spalte V wird ein Name mit der Folge eingetragen, dass lediglich die Zellen Q-V der jeweiligen Zeile gesperrt werden.
Beispiel:
Zeile 5 Eingabe "Testuser" in Spalte V
Ergebnis: Zellen Q5-V5 sind gesperrt. Der Rest der Tabelle bleibt editierbar.
Ist dies mittels VBA umzusetzen? Wenn ja, wäre ich über etwaige Tipps sehr dankbar.
Vielen Dank für eure Tipps.
Gruß Philipp

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 07:22:04
Hajo_Zi
Hallo Philipp,
Den Schutz hast Du ja bei allen Zellen aufgehoben.
Option Explicit                                     ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                  *
'* 03.06.14                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Columns(22)        ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
Range(Cells(RaZelle.Row, 17), Cells(RaZelle.Row, 22)).Locked = True
End With
Next RaZelle
ActiveSheet.Protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub

Anzeige
AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 07:32:41
Philipp
Hallo,
vielen Dank für die schnelle! Antwort.:)
Einige Zellen meiner Tabelle sind bereits vorab gesperrt.
Ich habe den Code in die Tabelle eingefügt. Allerdings wird nach einer Eingabe in Spalte V die gesamte Tabelle geschützt und nicht nur die 5 Zellen der Zeile davor.
Kann man dies noch umsetzen?
Nochmals vielen Dank für eure Bemühungen

AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 07:33:55
Hajo_Zi
Zellen kann Du nur schützen, wenn Du die Tabelle schützt, darum mein Hinweis.
Gruß Hajo

AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 11:16:59
Philipp
Ahhhh, jetzt habe ich es verstanden. Nun funktioniert es auch. Eine abschließende Frage habe ich jetzt noch. Auf deiner Homepage habe ich einen VBA-Code "Datum bei Änderung" gefunden. Diesen habe ich an meine Zelle angepasst.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'* H. Ziplies                                  *
'* 16.08.10                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
' wird im definierten Bereich ein Wert geändert,
' wird in der nächsten Spalte das Datum eingetragen
' das Datum wird entfernt falls die Eingabe gelöscht wird
' wird im definierten Bereich eine Eingabe überschrieben
' wird das Datum nicht verändert
Dim RaBereich As Range                          ' Variable fü überwachten Bereich
Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit  _
bearbeitet wird
Set RaBereich = Range("Q5:Q11, Q14:Q21, Q24:Q36, Q50:Q56, Q59:Q66, Q69:Q81, Q95:Q101, Q104: _
Q111, Q114:Q126")       ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
Application.ScreenUpdating = False          ' Bildschirm abschalten
For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im ü _
berwachten Bereich
If RaZelle = "" Then
RaZelle.Offset(0, 4).ClearContents  ' Zellinhalt löschen
ElseIf RaZelle.Offset(0, 4) = "" Then
RaZelle.Offset(0, 4) = Now()         ' Datum eintragen, nur bei ersten Eintrag
End If
Next RaZelle
Application.ScreenUpdating = True           ' Bildschirm einschalten
Application.EnableEvents = True             ' Reaktion auf Eingabe einschalten
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub
Gibt es eine Möglichkeit, dass man diese beiden Codes ("Datum bei Änderung" & "Zellschutz") kombiniert?

Anzeige
AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 13:00:55
Hajo_Zi
Ja kopieren diesen Code vor end Sub.
Gruß Hajo

AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 14:46:47
Philipp
Hallo nochmal,
mit diesem Code klappt es so nicht. Durch Excel bekomme ich einen Fehler ausgeworfen. Mehrdeutiger Name wurde erkannt.
Private Sub Worksheet_Change(ByVal Target As Range)
'* H. Ziplies                                  *
'* 16.08.10                                    *
'* erstellt von HajoZiplies@web.de             *
'* http://Hajo-Excel.de/
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Columns(22)        ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
Range(Cells(RaZelle.Row, 17), Cells(RaZelle.Row, 22)).Locked = True
End With
Next RaZelle
ActiveSheet.Protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim RaBereich As Range                          ' Variable fü überwachten Bereich
Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit  _
bearbeitet wird
Set RaBereich = Range("Q5:Q11, Q14:Q21, Q24:Q36, Q50:Q56, Q59:Q66, Q69:Q81, Q95:Q101, Q104: _
Q111, Q114:Q126")       ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
Application.ScreenUpdating = False          ' Bildschirm abschalten
For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im ü _
berwachten Bereich
If RaZelle = "" Then
RaZelle.Offset(0, 4).ClearContents  ' Zellinhalt löschen
ElseIf RaZelle.Offset(0, 4) = "" Then
RaZelle.Offset(0, 4) = Now()         ' Datum eintragen, nur bei ersten Eintrag
End If
Next RaZelle
Application.ScreenUpdating = True           ' Bildschirm einschalten
Application.EnableEvents = True             ' Reaktion auf Eingabe einschalten
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub
End Sub

Anzeige
AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 15:06:37
Hajo_Zi
Du musst die Zeile

Private Sub Worksheet_Change(ByVal Target As Excel.Range) und End Sub
löschen die dürfen nur einmal da sein.
Gruß Hajo

AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 15:28:31
Philipp
Die Fehler hören leider nicht auf. Nun heißt der Excel-Fehler:
"Mehrfachselektion im aktuellen Gültigkeitsbereich"
Ich habe alles so geändert wie du gesagt hast. Vielen Dank für deine zahlreichen Tipps. Du bist mir bisher eine große Hilfe.
Gruß Philipp
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range                          ' Variable für Bereich
Dim RaZelle As Range                            ' Variable für Zelle
Set RaBereich = Columns(22)        ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
ActiveSheet.Unprotect ("Passwort")
For Each RaZelle In RaBereich
With RaZelle
Range(Cells(RaZelle.Row, 17), Cells(RaZelle.Row, 22)).Locked = True
End With
Next RaZelle
ActiveSheet.Protect ("Passwort")
End If
Set RaBereich = Nothing                         ' Variable leeren
Dim RaBereich As Range                          ' Variable fü überwachten Bereich
Dim RaZelle As Range                            ' Variable für Zelle die zur Zeit  _
bearbeitet wird
Set RaBereich = Range("Q5:Q11, Q14:Q21, Q24:Q36, Q50:Q56, Q59:Q66, Q69:Q81, Q95:Q101, Q104: _
Q111, Q114:Q126")       ' Bereich der Wirksamkeit
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False            ' Reaktion auf Eingabe abschalten
Application.ScreenUpdating = False          ' Bildschirm abschalten
For Each RaZelle In RaBereich               ' Schleife über alle veränderten Zellen im ü _
berwachten Bereich
If RaZelle = "" Then
RaZelle.Offset(0, 4).ClearContents  ' Zellinhalt löschen
ElseIf RaZelle.Offset(0, 4) = "" Then
RaZelle.Offset(0, 4) = Now()         ' Datum eintragen, nur bei ersten Eintrag
End If
Next RaZelle
Application.ScreenUpdating = True           ' Bildschirm einschalten
Application.EnableEvents = True             ' Reaktion auf Eingabe einschalten
End If
Set RaBereich = Nothing                         ' Variable leeren
End Sub

Anzeige
AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 15:33:02
Hajo_Zi
Die Variablen müssen nur einmal definiert werden also lösche
Dim RaBereich As Range ' Variable fü überwachten Bereich
Dim RaZelle As Range ' Variable für Zelle die zur Zeit _
bearbeitet wird
Gruß Hajo

AW: Bestimmte Zellen nach Eingabe sperren
03.06.2014 15:36:59
Philipp
Wahnsinn!!! Es funktioniert...
Ich bedanke mich nochmals bei dir :)
Grüße Philipp

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige