gibt es in Excel die Möglichkeit eine Zeile mittels VBA zu sperren ohne den Blattschutz zu aktivieren?
Vielen Dank im Voraus!
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.
Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
Suche im Projekt-Explorer das Arbeitsblatt, auf dem du die Zellen sperren möchtest (z.B. „Tabelle1“).
Doppelklicke auf das Arbeitsblatt, um das Codefenster zu öffnen.
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
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.
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.
Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Datenvalidierung nutzen, um Eingaben in bestimmten Zellen zu verhindern:
Daten > Datenüberprüfung.Beachte, dass dies keine vollständige Sperrung bietet, sondern nur Eingaben einschränkt.
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
Application.EnableEvents = False, um zu verhindern, dass der Code sich selbst erneut auslöst, während du die Auswahl änderst.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.