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

Mit Checkbox Zelle sperren und entsperren

Forumthread: Mit Checkbox Zelle sperren und entsperren

Mit Checkbox Zelle sperren und entsperren
16.02.2004 11:09:26
Thomas
Hallo,
ich möchte gerne eine Zelle oder Zellbereich sperren, wenn eine Checkbox aktiviert ist. wie macht man das ?
Danke im voraus
Thomas
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Checkbox Zelle sperren und entsperren
16.02.2004 11:23:48
Galenzo
Hallo Thomas,
du hast also eine Userform "Userform1" mit 'ner Checkbox "Checkbox1" drauf.
Und du möchtest beispielsweise Zelle "A1" in "Tabelle1" sperren/entsperren:


Private Sub CheckBox1_Click()
    With Sheets("Tabelle1")
        .Unprotect "passwort"
        .Range("A1").Locked = IIf(CheckBox1, TrueFalse)
        .Protect "passwort"
    End With
End Sub
Private Sub UserForm_initialize()
    CheckBox1 = Sheets("Tabelle1").Range("A1").Locked
End Sub

Die zweite Prozedur (Userform_Initialize) bewirkt, daß beim anzeigen der Userform entsprechend dem Gesperrt/frei-Status der Zelle A1 schonma das Häkchen gesetzt wird bzw. nicht - finde ich sinnvoll...
mfg
Anzeige
AW: Mit Checkbox Zelle sperren und entsperren
16.02.2004 11:46:43
Thomas
Hallo,
hab ich vielleicht falsch erklärt...
Ich möchte vor jeder Spalte einer Liste eine Checkbox habe (hab keine UserForm). Erst wenn die checkbox angeklickt wurde, wird die Spalte zur Eingaeb freigegeben. Wird der hacken wieder entfertn soll die Spalte wieder blockiert sein
Gruß
Thomas
Anzeige
AW: Mit Checkbox Zelle sperren und entsperren
16.02.2004 12:29:43
Galenzo
Hallo nochmal,
das mit den vielen Checkboxen scheint mir ungeeignet - an der Vorgehensweise ändert sich jedoch nix. Du mußt dann das Ereignis Checkbox_Click genauso zuweisen.

Wenn du sehr viele Zeilen hast, ist mein Vorschlag die Verwendung einer "Ankreuz"-Spalte.
Ich habe da z.B. die Spalte A verwendet und diese Auf Scriftart "Marlett" formatiert.
Du weist nun noch dem WOrksheet_SelectionChange-Ereignis des Tabellenblates diese Prozedur zu:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim As Range
    Set c = Range("A1:A100")
    Set Target = Intersect(c, Target)
    If Not Target Is Nothing Then
        ActiveSheet.Unprotect ""
        For Each In Target.Cells
            With c
                .Font.Name = "Marlett"
                .Font.Size = 10
                If .Value = "r" Then
                    .Value = "a"
                    .Font.ColorIndex = 50
                    Cells(.Row, "D").Locked = False
                Else
                    .Value = "r"
                    .Font.ColorIndex = 3
                    Cells(.Row, "D").Locked = True
                End If
            End With
        Next
        ActiveSheet.Protect ""
    End If
End Sub

Diese bewirkt, daß bei einem Klick auf die ersten 100 Zeilen in Spalte A ein rotes Kreuz bzw. ein grünes Häkchen gesetzt wird, entsprechend dem Zustand "Gesperrt/frei" der (beispielsweise) Spalte "D", der damit auch gleich gesetzt wird.
Ich hoffe das hilft dir mehr...
mfg
Anzeige
;
Anzeige

Infobox / Tutorial

Mit Checkboxen Zellen sperren und entsperren


Schritt-für-Schritt-Anleitung

  1. Erstelle eine Checkbox: Füge eine Checkbox in der gewünschten Zelle ein. Gehe dazu zu Entwicklertools > Einfügen > Checkbox (Formularsteuerelement).

  2. Verknüpfe die Checkbox mit einer Zelle: Klicke mit der rechten Maustaste auf die Checkbox und wähle Steuerelement formatieren. Wähle dort eine Zelle aus, die den Status der Checkbox anzeigen soll.

  3. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  4. Code eingeben: Füge den folgenden Code in das entsprechende Arbeitsblatt ein (z.B. Tabelle1):

    Private Sub CheckBox1_Click()
       With Sheets("Tabelle1")
           .Unprotect "passwort"
           .Range("A1").Locked = CheckBox1.Value
           .Protect "passwort"
       End With
    End Sub
  5. Sichern der Änderungen: Schließe den VBA-Editor und teste die Checkbox. Wenn sie aktiviert ist, sollte die Zelle "A1" gesperrt werden, und wenn sie deaktiviert ist, sollte die Zelle wieder bearbeitbar sein.


Häufige Fehler und Lösungen

  • Checkbox funktioniert nicht: Stelle sicher, dass die Checkbox korrekt mit einer Zelle verknüpft ist. Überprüfe auch die Makrosicherheitseinstellungen in Excel.

  • Zelle bleibt immer gesperrt: Achte darauf, dass der Code im CheckBox1_Click-Ereignis korrekt ist. Prüfe, ob das richtige Arbeitsblatt angesprochen wird.

  • Schriftart wird nicht angezeigt: Wenn du das Marlett-Zeichen verwenden möchtest, stelle sicher, dass die Schriftart der Zelle auf Marlett eingestellt ist, damit die Häkchen und Kreuze korrekt angezeigt werden.


Alternative Methoden

Eine Alternative zur Verwendung von Formularsteuerelementen ist die Nutzung von ActiveX-Steuerelementen. Diese bieten mehr Funktionen, benötigen jedoch ebenfalls VBA-Programmierung. Du kannst auch die Worksheet_SelectionChange-Ereignisprozedur verwenden, um die Zellen basierend auf dem Zustand von Checkboxen zu sperren oder zu entsperren, wie es in dem ursprünglichen Beitrag beschrieben wurde.


Praktische Beispiele

Ein praktisches Beispiel für die Verwendung von Marlett-Zeichen:

  1. Spalte für Checkboxen erstellen: Verwende die Spalte A für Checkboxen und formatiere die Zellen mit der Schriftart Marlett.

  2. VBA-Code für die Spalte A: Setze den folgenden Code in das Worksheet_SelectionChange-Ereignis ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Dim c As Range
       Set c = Range("A1:A100")
       Set Target = Intersect(c, Target)
       If Not Target Is Nothing Then
           ActiveSheet.Unprotect ""
           For Each c In Target.Cells
               With c
                   If .Value = "r" Then
                       .Value = "a"
                       .Font.ColorIndex = 50
                       Cells(.Row, "D").Locked = False
                   Else
                       .Value = "r"
                       .Font.ColorIndex = 3
                       Cells(.Row, "D").Locked = True
                   End If
               End With
           Next
           ActiveSheet.Protect ""
       End If
    End Sub

Tipps für Profis

  • Verwende benutzerdefinierte Schriftarten: Die Verwendung von Marlett kann das Erstellen von Checkboxen vereinfachen. Experimentiere mit verschiedenen Schriftarten, um das gewünschte Erscheinungsbild zu erzielen.

  • Makros abspeichern: Vergiss nicht, deine Excel-Datei als xlsm-Format zu speichern, um die Makros zu behalten.

  • Schutz der Arbeitsmappe: Achte darauf, dass du die Arbeitsmappe schützt, um unautorisierte Änderungen zu verhindern. Verwende Passwortschutz für kritische Zellen.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Checkboxen gleichzeitig hinzufügen?
Du kannst mehrere Checkboxen direkt kopieren und im gewünschten Bereich einfügen. Achte darauf, die Zellen, mit denen sie verknüpft sind, entsprechend anzupassen.

2. Was ist der Unterschied zwischen Formularsteuerelementen und ActiveX-Steuerelementen?
Formularsteuerelemente sind einfacher und benötigen weniger Code, während ActiveX-Steuerelemente mehr Funktionalitäten bieten, aber auch komplexer in der Handhabung sind.

3. Wie kann ich das Marlett-Zeichen in Excel verwenden?
Ändere die Schriftart der Zelle auf Marlett und verwende die Buchstaben a für ein Häkchen und r für ein Kreuz.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige