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

Checkbox per Buttenklick deaktivieren

Forumthread: Checkbox per Buttenklick deaktivieren

Checkbox per Buttenklick deaktivieren
14.01.2005 09:42:57
Michael
Hallo Leute, hoffe ihr könnt mir helfen! Ich habe ein Formular mit einer größeren Anzahl von Checkbox-Buttons erstellt. Es soll als Kontrollprogramm dienen. Wenn die Eingaben (Anklicken) erfolgt sind, möchte ich per Buttonklick alle Häkchen (Checkboxen) deaktivierten, um bei Neueingabe nicht alle vorher ausklicken zu müssen. Habe hier zwar einen Code, der zeigt mir aber einen Laufzeitfehler an.

Private Sub CommandButton1_Click()
Dim tb As Object
For Each tb In UserForm1.Controls
If TypeName(tb) = "CheckBox" Then tb = False
Next tb
End Sub

Kann jemand helfen. Lieben Dank Micha
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Checkbox per Buttenklick deaktivieren
Heiko
Da du ja wenig Infos mitschickst, schaue ich mal in meine Glaskugel.
1. Vermutung:
Ist der Name von dem Userform das du hast auch UserForm1 ?
Sonst mußt du das im Code auf den richtigen Namen ändern
2.Vermutung:
Keine, da dein Projkt hier nicht eingestellt ist.
Gruß Heiko
Anzeige
AW: Checkbox per Buttenklick deaktivieren
14.01.2005 10:21:56
Michael
Hallo Heiko, lieben Dank für deine Hilfe. Aber was bzw. wie meinst Du das mit der Userform? Wo muß ich den Namen ändern und was ist der Name von der Userform?
Lieben Dank Micha
AW: Checkbox per Buttenklick deaktivieren
Heiko
Wo hast du denn die Checkboxen, im Tabellenblatt oder in einem UserForm.
UserForm ist ein in VBA selbst erstelltest Window Fenster.
Gruß Heiko
Anzeige
AW: Checkbox per Buttenklick deaktivieren
14.01.2005 10:31:56
Michael
Habe die Checkboxen in einem ganz normalen Tabellenblatt!
Gruß Micha
AW: Checkbox per Buttenklick deaktivieren
Heiko
Dann mache es auf die einfache Art, da die Controls Funktion meines Wissens nicht bei Worksheets läuft.
Ersetze MSG-Boxes mit dem Namen deines Tabellenblattes, und die Checkbox1, Checkbox2 ... mit den Namen die du benutzt hast. Wenn du mehr Boxen hast einfach Zeilen nach dem Schema
.CheckBox1.Value = False
Einfügen.

Private Sub CommandButton7_Click()
With Worksheets("MSG-Boxes")
.CheckBox1.Value = False
.CheckBox2.Value = False
.CheckBox3.Value = False
.CheckBox4.Value = False
End With
End Sub

Gruß Heiko.
Anzeige
AW: Checkbox per Buttenklick deaktivieren
14.01.2005 10:45:34
Michael
Hallo Heiko, aber bitte nicht lachen, ich habe davon nicht so viel Ahnung. Wo finde ich die MSG-Box? Wo muß ich den Namen ändern? Den Checkboxen habe ich keinen Namen gegeben. Die sind ganz normal immer mit .1 ... .87 usw.
es klappt, aber wie?
14.01.2005 10:51:37
Michael
Hallo Heiko, habe etwas probiert und es funktioniert. Wenn ich zB. aber 500 Checkboxen habe, muß ich da für jede einzelne eine Zeile schreiben oder kann ich da eine Zusammenfassung machen oder ein Schleife? Wie könnte das aussehen und was müßte ich da schreiben?
Anzeige
AW: es klappt, aber wie?
Heiko
Also Michael,
wie du die Schleife baust ist mir zwar prinzipel klar, aber da sich das Controls Objekt nicht auf ein Worksheet anwenden läßt kann ich dir da auch nicht weiterhelfen.
Das wäre eine Aufgabe für Ramses oder Josef E, die haben da bestimmt ne Lösung.
Poste doch mal als Überschrift, "Dynamische Checkbox Namen im Sheet".
Füge den Code denn du ganz oben drin hast mit ein (Den mit Userform1 und Controls) erkläre dein Problem (vor allem das die Checkboxen im Tabellenblatt nicht in einem UserForm sind) und stelle die Frage ob jemand weiß wie der gepostete Code auf auf Worksheets angewandet werden kann.
Gruß Heiko
Anzeige
AW: es klappt, aber wie?
14.01.2005 11:10:03
Michael
Dann bedanke ich mich für deine Hilfe, hat mich schon sehr viel weitergebracht. habe es in Forum reingestellt, mal schauen!!!
Also lieben Gruß und Dank uns schönes WE
Micha
;
Anzeige
Anzeige

Infobox / Tutorial

Checkboxen per Buttonklick deaktivieren in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues Tabellenblatt.

  2. Füge Checkboxen hinzu: Gehe zu Entwicklertools > Einfügen > Formularsteuerelemente und wähle die Checkbox aus. Platziere die gewünschten Checkboxen im Blatt.

  3. Füge einen Button hinzu: Gehe wieder zu Entwicklertools > Einfügen und wähle einen Button aus. Platziere den Button im Blatt.

  4. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  5. Füge folgenden Code in das Button-Klick-Ereignis ein:

    Private Sub CommandButton1_Click()
       With Worksheets("DeinTabellenblattName")
           .CheckBox1.Value = False
           .CheckBox2.Value = False
           ' Füge für alle Checkboxen die entsprechenden Zeilen hinzu
       End With
    End Sub

    Ersetze "DeinTabellenblattName" mit dem tatsächlichen Namen deines Tabellenblattes.

  6. Schließe den VBA-Editor und teste den Button. Klicke auf den Button, um alle Checkboxen zu deaktivieren.


Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler beim Ausführen des Codes.

    • Lösung: Überprüfe den Namen des Tabellenblattes und stelle sicher, dass die Checkboxen korrekt benannt sind. Stelle außerdem sicher, dass du die Checkboxen im richtigen Blatt verwendest.
  • Fehler: Checkboxen lassen sich nicht deaktivieren.

    • Lösung: Stelle sicher, dass du die Checkboxen mit dem richtigen Namen im Code ansprichst. Wenn du keine spezifischen Namen für die Checkboxen vergeben hast, kannst du sie im Code entsprechend nummerieren (z. B. CheckBox1, CheckBox2, usw.).

Alternative Methoden

Wenn du eine große Anzahl an Checkboxen hast und das manuelle Deaktivieren zu aufwendig ist, kannst du den folgenden VBA-Code verwenden, um alle Checkboxen in einer Schleife zu deaktivieren:

Private Sub CommandButton1_Click()
    Dim cb As Object
    For Each cb In Worksheets("DeinTabellenblattName").OLEObjects
        If TypeName(cb.Object) = "CheckBox" Then
            cb.Object.Value = False
        End If
    Next cb
End Sub

Dieser Code durchläuft alle OLE-Objekte im angegebenen Tabellenblatt und deaktiviert jede Checkbox, die gefunden wird.


Praktische Beispiele

Angenommen, du hast 500 Checkboxen in deinem Tabellenblatt. Statt für jede Checkbox eine Zeile im Code zu schreiben, kannst du die oben genannte Schleife verwenden, um alle Checkboxen auf einmal zu deaktivieren. Dies ist besonders nützlich, wenn du eine große Anzahl an Checkboxen hast und die Funktionalität des "disable dynamic tick" benötigst.


Tipps für Profis

  • Namen von Checkboxen: Wenn du deinen Checkboxen spezifische Namen gibst (z. B. CheckBox_A, CheckBox_B), wird die Wartung und das Management der Checkboxen einfacher.
  • Benutzerdefinierte Schaltflächen: Du kannst auch anpassbare Schaltflächen für verschiedene Aktionen erstellen, z. B. eine Schaltfläche, um alle Checkboxen zu aktivieren oder nur bestimmte Checkboxen zu deaktivieren.
  • Code modularisieren: Entwickle eine Funktion, die die Checkboxen deaktiviert, und rufe diese Funktion bei Bedarf auf. Dadurch bleibt dein Code sauber und wartbar.

FAQ: Häufige Fragen

1. Wo finde ich die MSG-Box?
Die MSG-Box ist in diesem Kontext nicht relevant. Stattdessen solltest du sicherstellen, dass du den richtigen Namen deines Tabellenblattes im Code ersetzt.

2. Was mache ich, wenn ich keine Namen für meine Checkboxen vergeben habe?
Wenn du keine spezifischen Namen vergeben hast, kannst du die Checkboxen wie im Beispiel oben mit OLEObjects durchlaufen, um sie alle auf einmal zu deaktivieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige