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

Forumthread: Excel VBA Zeile sperren ohne Blattschutz

Excel VBA Zeile sperren ohne Blattschutz
03.02.2016 14:53:10
Chris
Hallo Forumsmitglieder,
gibt es in Excel die Möglichkeit eine Zeile mittels VBA zu sperren ohne den Blattschutz zu aktivieren?
Vielen Dank im Voraus!

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA Zeile sperren ohne Blattschutz
04.02.2016 09:14:48
Chris
Hallo Michael,
vielen Dank! ist genau das wonach ich gesucht habe. Könntest du mir den Code etwas genauer erläutern? Speziell das mit Target.
Vielen Dank und viele Grüße
Chris

Anzeige
AW: Danke für die Rückmeldung + kurze Erläuterung
04.02.2016 09:41:30
Michael
Hallo Chris!
Gerne, freut mich, dass es passt! Hier eine kurze Info zum Code:
Wir nutzen hier ein Ereignis, und zwar Worksheet_SelectionChange (in diesem Fall nur auf dem zugehörigen Tabellenblatt, hier Tabelle1). Dieses Ereignis wird immer angestoßen, wenn sich der ausgewählte Zellbereich ändert (wenn eine neue Selection, also Bereichsauswahl, getroffen wird).
Target ist somit immer das Ziel jenes Vorgangs, der das Ereignis ausgelöst hat - was ist das Ziel einer Bereichsauswahl? Ein Zellbereich!
Im Code passiert dann nichts anderes, als dass wir prüfen ob Zeile 6 Teil des Target ist (hier wird bei Auswahl von mehr als einer Zelle auf die aktive Zelle Bezug genommen). Ist Zeile 6 KEIN Teil des Target speichern wir diese Auswahl als Bereich in einer globalen Variablen LetzteAdresse. Ist Zeile 6 Teil des Target rufen wir eine Messagebox auf und ändern die Zellauswahl auf den Bereich, der in der globalen Variablen gespeichert ist.
LG
Michael

Anzeige
AW: Danke für die Rückmeldung + kurze Erläuterung
04.02.2016 10:27:09
Chris
Vielen Dank für deine ausführliche und verständnisvolle Erläuterung!
Habe damit etwas rumgespielt und die Sperrung auf eine einzelne Zelle umgeschrieben :)
Danke nochmals und viele Grüße
Chris

AW: Gerne! Danke für die Rückmeldung, owT
04.02.2016 10:30:57
Michael
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Zeilen und Zellen ohne Blattschutz sperren


Schritt-für-Schritt-Anleitung

Um eine Zeile oder einzelne Zellen in Excel mittels VBA zu sperren, ohne den Blattschutz zu aktivieren, kannst du den folgenden Code verwenden. Dieser muss im entsprechenden Arbeitsblatt-Modul eingefügt werden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Suche im Projekt-Explorer das Arbeitsblatt, auf dem du die Zellen sperren möchtest (z.B. „Tabelle1“).

  3. Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.

  4. Füge den folgenden Code ein:

    Private LetzteAdresse As Range
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not Intersect(Target, Me.Rows(6)) Is Nothing Then
           MsgBox "Diese Zeile ist gesperrt."
           Application.EnableEvents = False
           LetzteAdresse.Select
           Application.EnableEvents = True
       Else
           Set LetzteAdresse = Target
       End If
    End Sub
  5. Schließe den VBA-Editor und teste die Funktionalität im Excel-Arbeitsblatt.

Dieser Code sperrt die gesamte Zeile 6, indem er eine Nachricht anzeigt, wenn jemand versucht, sie auszuwählen. Gleichzeitig wird die vorherige Auswahl wiederhergestellt.


Häufige Fehler und Lösungen

  • Fehler: Der Code funktioniert nicht.
    Lösung: Stelle sicher, dass du den Code im richtigen Arbeitsblatt-Modul eingefügt hast und dass die Makros in deiner Excel-Instanz aktiviert sind.

  • Fehler: Keine Nachricht wird angezeigt, wenn die Zeile 6 ausgewählt wird.
    Lösung: Überprüfe, ob das Worksheet_SelectionChange-Ereignis korrekt geschrieben ist und keine Syntaxfehler im Code vorhanden sind.


Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Datenvalidierung nutzen, um Eingaben in bestimmten Zellen zu verhindern:

  1. Wähle die Zelle oder den Bereich aus, den du schützen möchtest.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle „Benutzerdefiniert“ und gib eine Formel ein, die die Eingabe einschränkt.

Beachte, dass dies keine vollständige Sperrung bietet, sondern nur Eingaben einschränkt.


Praktische Beispiele

  • Sperren einer einzelnen Zelle: Um eine einzelne Zelle zu sperren, kannst du das Target-Objekt im Code anpassen:

    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
       MsgBox "Diese Zelle ist gesperrt."
       Application.EnableEvents = False
       LetzteAdresse.Select
       Application.EnableEvents = True
    End If
  • Sperren einer Spalte: Um eine gesamte Spalte zu sperren, ändere die Zeile im Code:

    If Not Intersect(Target, Me.Columns(2)) Is Nothing Then ' Spalte B

Tipps für Profis

  • Nutze Application.EnableEvents = False, um zu verhindern, dass der Code sich selbst erneut auslöst, während du die Auswahl änderst.
  • Verwende globale Variablen zur Speicherung von vorherigen Auswahlbereichen, um eine bessere Benutzerführung zu gewährleisten.
  • Teste den Code in verschiedenen Excel-Versionen, um sicherzustellen, dass er überall funktioniert.

FAQ: Häufige Fragen

1. Kann ich mehrere Zeilen gleichzeitig sperren?
Ja, du kannst die Zeilen im Intersect-Befehl anpassen, um mehrere Zeilen zu berücksichtigen.

2. Funktioniert dieser Code in Excel 2016?
Ja, der Code sollte in Excel 2016 sowie in späteren Versionen ohne Probleme funktionieren.

3. Gibt es eine Möglichkeit, nur die Formeln zu schützen?
Ja, du kannst die Zellen so formatieren, dass sie gesperrt sind, wenn der Blattschutz aktiviert ist. Allerdings ist dies nicht ohne Blattschutz möglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige