Anzeige
Archiv - Navigation
1332to1336
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
Zellen sperren und entsperren
09.10.2013 23:37:07
Justi
Hallo zusammen,
dank dieses genialen Forums habe ich ein Makro von Basti zu folgendem Problem erhalten:
ich habe eine Excel-Tabelle (Blattschutz aktiv) in der von verschiedenen Bearbeitern Daten eingetragen werden. Die eingetragenen Daten werden durch einen zweiten Bearbeiter geprüft. Ist der Eintrag OK, wird in einer Zelle nach den Einträgen ein "c" eingetragen. Die Zellen (n-3) und (n-4),in Relation zur Zelle in der "c" eigetragen wurde, werden automatisch gesperrt.
Wird das „c“ gelöscht werden die Zellen durch Passwortabfrage wieder entsperrt.
Das Makro funktioniert super. Nur kann ich den Autofilter nicht anwenden (das habe ich in etwa hinbekommen indem ich „AllowFiltering:=True“ ergänzt habe; funktioniert allerdings nur wenn ich eine Zelle mit „c“ eingetragen habe; ansonsten nicht). Auch ein/ausblenden der Gliederung funktioniert bei eingeschaltetem Blattschutz nicht. Die beiden Funktionen müssen aber in jedem Fall verwendet werden können.
Kann mir da nochmal jemand helfen?
Option Explicit
Dim strAlterWert As String
Dim strPasswort As String
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
If Target.Cells.Count > 1 Then Exit Sub
If Target.Value = "C" Or Target.Value = "c" Then
ActiveSheet.Unprotect
Target.Offset(0, -3).Locked = True
Target.Offset(0, -4).Locked = True
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
If strAlterWert = "C" Or strAlterWert = "c" Then
strPasswort = InputBox("Bitte Passwort eingeben")
Select Case strPasswort
Case "1234"
ActiveSheet.Unprotect
Target.Offset(0, -3).Locked = False
Target.Offset(0, -4).Locked = False
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Case Else
Application.EnableEvents = False
Target.Value = strAlterWert
Application.EnableEvents = True
Exit Sub
End Select
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
strAlterWert = Target.Value
End Sub

Viele Grüße
Justi

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren und entsperren
10.10.2013 08:42:08
Bastian
Hallo Justi,
kopier zusätzlich den folgenden Code in das Codefenster der Arbeitsmappe:
Option Explicit
Sub Workbook_Open()
'für alle Blätter mit Passwortschutz
Dim ws As Worksheet
For Each ws In Worksheets
ws.Protect userinterfaceonly:=True, Password:="1234" 'Passwort anpassen
ws.EnableAutoFilter = True 'ermöglicht Autofilter
ws.EnableOutlining = True 'ermöglicht Gruppierung/Gliederung
Next ws
End Sub

Den Autofilter und die Gliederung musst Du dann bei ausgeschaltetem Blattschutz einrichten.
Nach dem erneuten Schützen des Blattes ist dann der Autofilter und die Gliederung noch aktiv.
Gruß, Bastian

Anzeige
AW: Zellen sperren und entsperren
10.10.2013 23:41:18
Justi
Hallo Bastian,
vielen Dank für Deine Hilfe. Der Autofilter funktioniert einwandfrei.Die Gliederung kann ich auch öffnen.Wenn ich danach allerdings ein Feld in der geöffneten Gliederung anklicke (in dem Fall stand dort die Fehlermeldung #Wert und ich wollte die Zelle bearbeiten)erscheint die Fehlermeldung "Typen unverträglich". Beim Debuggen wird der fett makierte Teil in dem Code zum sperren/ entsperren makiert.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
strAlterWert = Target.Value

End Sub
Kann das irgendwie vermieden werden?
Viele Grüße
Justi

Anzeige
AW: Zellen sperren und entsperren
11.10.2013 09:13:07
Bastian
Hallo Justi,
dann müssen wir noch eventuelle Fehlerwerte in den Zellen abfangen:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Intersect(Range("A:P"), Target) Is Nothing Then Exit Sub
If IsError(Target.Value) Then Exit Sub
strAlterWert = Target.Value
End Sub
Gruß, Bastian

AW: Zellen sperren und entsperren
14.10.2013 20:52:52
Justi
Hallo Bastian,
das hat prima funktioniert. Danke!
Ist es einfach möglich, das Passwort bei der Abfrage über die Messagebox mit **** darzustellen und nicht im Klartext? Ich habe Google bemüht und die Lösungen, die ich erhalten habe, schienen mir nicht so einfach zu sein... ich kann auch damit leben, wenn das Passwort zu lesen ist. Eine Verschlüsselung wäre nur das letzte i-Tüpfelchen.
Viele Grüße
Justi

Anzeige
AW: Zellen sperren und entsperren
14.10.2013 22:13:20
Bastian
Hallo Justi,
mit der einfachen Inputbox, mit der momemtan die Passwortabfrage erfolgt, ist dies leider nicht möglich. Du kannst Dir aber zur Passwortabfrage eine kleine UserForm basteln, die Du mit einer Textbox versiehst. In den Eigenschaften der Textbox gibt es den Parameter "PasswordChar". Hier kannst Du ein Zeichen wählen, welches bei der Passworteingabe in der Textbox erscheinen soll (z.B. "*").
Die Variable "strPasswort" musst Du dann in einem Modul als "Global" deklarieren, da sie sowohl im Klassenmodul der Tabelle als auch im Klassenmodul der UserForm verwendet wird.
Gruß, Bastian

Anzeige
AW: Zellen sperren und entsperren
14.10.2013 22:55:26
Justi
Hallo Bastian,
vielen Dank für Deine Mühe. Ich werde es erst einmal so lassen wie es ist.
Viele Grüße
Justi

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige