Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1832to1836
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

Blattschutz wenn außerhalb Range klicke

Blattschutz wenn außerhalb Range klicke
09.06.2021 15:14:22
Jan
Hallo liebes Forum,
in einer Tabelle habe ich ein Blattschutz aktiviert. Über einen Button kommt eine MsgBox in der ich ein PW eingebe bei dem der Blattschutz (wenn richtiges PW) aufgehoben wird. Am besten nur in der Spalte ab O12 bis Oxx also ab Cell(12,15). bis lngRowMax = .Cells(Rows.Count, 15).End(xlUp).Row
Hier kann ich jetzt Werte belibig eintragen. Sobald ich mit der Maus in eine andere Zelle als diesen Bereich anklicke, soll der Blattschutz wieder aktiv sein.
Könnt ihr mir hier dabei helfen? Mein bisheriger Versuch klappt nicht.
Vg

Sub PW()
Dim Eingabe As String
Passw = "Extra"
Eingabe = InputBox("Geben Sie bitte das Passwort ein!")
If Eingabe = Passw Then
MsgBox "Zugriff erlaubt!"
Call UnProtectAll
If Target.Column = 15 Then
ActiveSheet.Unprotect
Else
If ActiveSheet.ProtectContents = False Then
ActiveSheet.Protect "Extra"
End If
End If
Else
Application.DisplayAlerts = False
MsgBox "Sie haben keine Zugriffsrechte!"
Exit Sub
End If
End Sub

Sub UnProtectAll()
Sheets("Tabelle1").Unprotect Password:="Extra"
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz wenn außerhalb Range klicke
09.06.2021 18:39:28
Yal
Hallo Jan,
Zum Schreiben erlauben musst Du
_ Passwort abfrage und prüfen
_ Blattschutz aufheben
_ Zelle-Sperre rausnehmen
_ Blattschutz wieder einsetzen
Zum Schreiben wieder sperren musst Du
_ Blattschutz aufheben
_ Zelle-Sperre einsetzen
_ Blattschutz wieder einsetzen
Sieht so aus :

Const PW = "Extra"
Public Sub Schreiben_erlauben()
If InputBox("Geben Sie bitte das Passwort ein!") = PW Then
Zellen_sperren False
MsgBox "Zugriff erlaubt!"
Else
MsgBox "Sie haben keine Zugriffsrechte!"
End If
End Sub
Public Sub Schreiben_sperren()
Zellen_sperren True
End Sub
Private Sub Zellen_sperren(Entsperre As Boolean)
With ActiveSheet
If .ProtectContents Then .Unprotect PW
.Range(.Range("O12"), .Range("O9999").End(xlUp)).Locked = False
.Protect PW
End With
End Sub
VG
Yal
Anzeige
AW: Blattschutz wenn außerhalb Range klicke
10.06.2021 09:20:15
Jan
Guten Morgen Yal,
danke für deine Antwort. Habe diesen Teil noch ein wenig angepasst, da mir aufgefallen ist, dass in seltenen Fällen in Spalte O schon Einträge seien können.
Das mit dem Entsperren klappt super. Allerdings das Sperren nicht. Dies soll ja aktiviert werden, sobald ich in eine andere Zelle klicke. Klicke ich in eine Zelle kommt ja der Hinweis, dass diese gesperrt ist (was ja auch richtig ist). Gibt es hier die Möglichkeit in dem Zuge den vorher freigegebenen Bereich in O wieder zu sperren? Oder geht es nicht, da ich keine andere Zelle auswählen kann?
Vg

Private Sub Zellen_sperren(Entsperre As Boolean)
With ActiveSheet
lngZeileMax = .Cells(Rows.Count, 2).End(xlUp).Row
If .ProtectContents Then .Unprotect PW
.Range(.Range("O12"), .Range("O" & lngZeileMax)).Locked = False
.Protect PW
End With
End Sub

Anzeige
AW: Blattschutz wenn außerhalb Range klicke
10.06.2021 09:48:39
Yal
Hallo JAn,
Du muss den Ereignis Selection_Change abfangen und wenn ausserhalb gewünschte Bereich die Sperre einleiten.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Range
Set R = Intersect(Target, Me.Range("O12:O999"), Me.UsedRange)
If R Is Nothing Then Zellen_sperren True
End Sub
Ein Ereignis-Procedure muss in der entsprechenden Tabellenblatt-Codepane abgelegt werden.
VG
Yal
AW: Blattschutz wenn außerhalb Range klicke
10.06.2021 10:30:06
Jan
Hallo Yal,
da reichen meine VBA-Kenntnisse dann leider nicht aus, wo ich jetzt was hinschreiben muss oder stehe auf dem Schlauch :)
habe jetzt das alles in das zugehörige Sheet kopiert, aber er macht es immer noch nicht. Also den letzten Teil mit dem wieder Sperren
Const PW = "Extra"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim R As Range
Set tov = Worksheets("OverviewNEU")
lngZeileMax = tov.Cells(Rows.Count, 2).End(xlUp).Row
Set R = Intersect(Target, Me.Range("O" & lngZeileMax), Me.UsedRange)
If R Is Nothing Then Zellen_sperren True
End Sub

Public Sub Schreiben_erlauben()
If InputBox("Geben Sie bitte das Passwort ein!") = PW Then
Zellen_sperren False
MsgBox "Zugriff erlaubt!"
Else
MsgBox "Sie haben keine Zugriffsrechte!"
End If
End Sub

Public Sub Schreiben_sperren()
Zellen_sperren True
End Sub

Private Sub Zellen_sperren(Entsperre As Boolean)
With ActiveSheet
lngZeileMax = .Cells(Rows.Count, 2).End(xlUp).Row
If .ProtectContents Then .Unprotect PW
.Range(.Range("O12"), .Range("O" & lngZeileMax)).Locked = False
.Protect PW
End With
End Sub

Anzeige
AW: Blattschutz wenn außerhalb Range klicke
10.06.2021 16:34:17
Yal
Hallo Jan,
Sub Worksheet_SelectionChange ist ein Ereignis-Procedure und muss unbedingt in der Codepane der Tabellenblatt.
Da Schreiben_erlauben und Schreiben_sperren "public" sind, sind sie von überall ansprechbar und müssen nicht in dieselbe Codepane liegen. Am besten in einem Modul.
VG
Yal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige