Die Excel Wühlkiste

Formularfelder und Steuerelemente

zurücksetzen - sperren - entsperren

Da haben wir ein tolles Formular in Excel konstruiert, haben jede Menge Checkboxen und Dropdownfelder zur Auswahl eingebaut und zudem noch eine riesige Menge normale Eingabezellen spendiert. Der Anwender kann nun prima ausfüllen.Ganz großartig.
   Was aber ist, wenn er das nächste Formular bearbeiten, oder wenn er noch einmal von vorne beginnen möchte? Schließt er dann das Formular und liest es erneut ein? Oder schlimmer noch: Soll er von Hand alle Zellen löschen und die Felder wieder "frei" klicken? Wie unpraktisch.

   Wäre ein "Reset-Button" nicht die bessere Wahl?

Damit der Anwender unsere Mühe nicht zunichte macht, wollen wir außerdem das Formular sperren und nur die Felder und Eingabezellen zur Bearbeitung freigeben.
   Die normalen Eingabezellen sind schnell markiert und über Format/Zellen entsperrt. Die Formularfelder bzw. die Steuerelemente können aber zur Formatierung nur einzeln selektiert werden. Das soll ein Makro übernehmen, sonst klicken wir uns die Finger wund.
   Soll das Formular später überarbeitet werden, so soll ein Makro alle Blätter in einem Schritt sperren oder entsperren - also immer den jeweils anderen Zustand, als den gerade vorhandenen, herstellen. Der Blattschutz verfügt über kein Passwort, weil wir dem Anwender ja vertrauen ^^. Der Blattschutz soll nur ein versehentliches Ändern verhindern.

  Modul1     Modul2     CommandButtons  

In diesem "Modul2" wird der Blattschutz geändert und die Sperrung der Steuerelemt-Toolbox-Felder gesetzt oder aufgehoben.
   Da dieses aber sicher nur sehr selten geschehen soll, ist diesen Funktionen kein Button zugewiesen. Sie müssen in der Entwicklungsumgebung von Hand gestartet werden. Sie sind auch nicht als SUB gespeichert, damit der Anwender diese Makros unter Extras/Makro/Makros nicht finden kann.

   Die Eigenschaft "LockedText" ist mit Vorsicht zu gebrauchen. Denn sie funktioniert nur manchmal und produziert ansonsten Fehler und es besteht der Verdacht, dass hierfür unterschiedliche Excel-Versionen verantwortlich sein können, mit denen die Felder erstellt wurden. Genau dies war nämlich bei der Entwicklung des Formulars der Fall.In diesem Beispiel sind die 2 Zeilen deshalb auch auskommentiert.

Option Explicit
Private i As Integer

Function Blattschutz()
If ActiveSheet.ProtectContents = True Then
    For i = 1 To Worksheets.Count
        With Worksheets(i)
            .Unprotect
        End With
    Next i

ElseIf ActiveSheet.ProtectContents = False Then
    For i = 1 To Worksheets.Count
        With Worksheets(i)
            .Protect DrawingObjects:=False, Contents:=True
        End With
    Next i
End If
End Function

Function Steuerelemente_sperren()
Dim sh As Shape
For i = 1 To Worksheets.Count
    For Each sh In Worksheets(i).Shapes
        If sh.Type = msoFormControl Then
            If sh.FormControlType = xlCheckBox Then
                sh.Locked = True
                'sh.LockedText = True
            End If
            If sh.FormControlType = xlDropDown Then
                sh.Locked = False
            End If
        End If
    Next sh
Next i
End Function

Function Steuerelemente_entsperren()
Dim sh As Shape
For i = 1 To Worksheets.Count
    For Each sh In Worksheets(i).Shapes
    sh.Select
        If sh.Type = msoFormControl Then
            If sh.FormControlType = xlCheckBox Then
                With Selection
                    .Locked = False
                    'sh.LockedText = True
                End With
            End If
            If sh.FormControlType = xlDropDown Then
            sh.Locked = False
            End If
        End If
    Next sh
Next i
End Function
Die Excel Wühlkiste
Valid HTML 4.01 Strict
letzte Aktualisierung: 13.02.2009
Autor: Hubert Scheidgen / 04.02.2009
W3C CSS-Validierungsservice