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

Forumthread: Zustand eines Toggle-Buttons ändern

Zustand eines Toggle-Buttons ändern
02.12.2020 23:39:40
Mike_Ehlert
Hallo,
Ich Habe mehrere Toggle-Buttons angelkegt, mit denen ich unterschiedliche Spalten Ein-Und Ausblenden kann... Die Buttons rufen dann die Entsprechenden Makros in Modul1 auf
Funktioniert soweit top...
Mein kleines Problem:
Ich möchte eine Schaltfläche haben, die auch alle Spalten wieder einblendet und dabei gleichzeitig die anderen Toggle-Buttons wieder zurücksetzt in "nicht geklickt".
Mit "Alles_Einblenden" (liegt im Modul1) funktioniert... nur für das Zurücksetzen der Toggle-Buttons finde ich keine Lösung...
Gibt es da eine Möglichkeit?
Hier mal mein Aufbau:
Die Button-SUB funbktioniert soweit (nur eine dargestellt als Beispiel):

Private Sub Grundpreise_Allein_Click()
Dim TB As ToggleButton
If Grundpreise_Allein = True Then
Grundpreise_Allein.Caption = "Rest einblenden"
Call Nur_Grundpreise
Else
Grundpreise_Allein.Caption = "Nur Grundpreise"
Call Nur_Grundpreise_zurück
End If
End Sub

Das soll der Button werden, der alle Spalten wieder einblendet und gleichzeitig die Toggle-Buttons zurücksetzen soll:

Private Sub Alle_Spalten_Einblenden_Click()
Call Grundpreise_Allein_Click(False)    

Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zustand eines Toggle-Buttons ändern
03.12.2020 00:58:41
Tobias
Hallo Mike,
deine ToggleButtons kannst du über die OLEObjects Collection deines Worksheets ansprechen.
Debug.Print ActiveSheet.OleObjects("ToggleButton1").Object.Value

zeigt dir zum Beispiel den aktuellen Zustand in dem Direktbereich. Genauso kannst du diesen dann auch ändern indem du den Wert neu zuweist. Über alle Buttons kannst du dann auch mit einer For Each Schleife iterieren. Dann halte ich es so das ich meine Controls direkt nach ihrem Typ benenne(zb cb_Test12 für die Checkboxen oder btn_Drücker für Buttons). Dann kann man über den Namen recht schnell den Typ ermitteln und die Wertänderung vornehmen.
For Each x in ActiveSheet.OleObjects
If Left(x.Name,2) = "tb" Then
x.Object.Value = False
End if
Next 
Ob es einen besseren Weg gibt den Typ des OleObjects zu ermitteln, weiss ich nicht.
Darüber solltest du aber auf jedenfall dein Problem angehen können.
Schöne Grüße
Tobias
Anzeige
AW: Zustand eines Toggle-Buttons ändern
03.12.2020 19:45:30
Mike_Ehlert
Hallo Thomas,
vielen Dank...
Ich komme zwar mit der Variablen x nicht klar (hat mich der Debugger "angemeckert")
Muss vermutlich irgendwo deklariert werden (wo und wie?)
Auch nicht so wirklich mit der "For-Next"-Schleife
Jedoch hat mir Deine Antwort trotzdem weiter geholfen. Habe das jetzt so gelöst:

Private Sub Alle_Spalten_Einblenden_Click()
Call Alles_Einblenden
TB_Pächterwechsel.Object.Value = False
WU_Wechsel.Object.Value = False
Grundpreise.Object.Value = False
Grundpreise_Allein.Object.Value = False
End Sub

Auswertung des Zustandes ist für mich hier nicht wirklich relevant, das eh alle Knöppe wieder ausgeschaltet werden sollen, weil ich ja alle Spalten wieder einblende.
Insofern funktioniert das in dieser Form für mich.
Ich bin in VBA noch absoluter Anfänger, jedoch auch nicht mehr der Jüngste, dass ich mich da so intensiv reinhängen kann.
Anzeige
AW: Zustand eines Toggle-Buttons ändern
03.12.2020 20:39:35
Tobias
Hallo Mike,
bei den vier Buttons ist das so definitiv ausreichend, die Variante mit for each wäre bei mehreren dann ganz praktisch. Das x hätte noch ordentlich definiert werden müssen mit
Dim x as Object
Freut mich das ich helfen konnte
Schöne Grüße
Tobias
Anzeige
AW: Zustand eines Toggle-Buttons ändern
03.12.2020 21:36:06
Mike_Ehlert
Hallo Tobias (sorry, vorhin kam ich mit dem Namen durcheinander),
Vielen Dank, werde ich mal in einer ruhigen Minute trotzdem mal testen - erhöht den Lerneffekt.
Für bis jetzt auf alle Fälle erst mal Ziel erreicht.
Die Tabelle dient für mich im Kleingartenverein für Abrechnungszwecke - jedoch im Eingabe-Arbeitsblatt an Spalten im Laufe der Jahre gewachsen.
Das macht die Sache bei der reinen Abrechnung unübersichtlich.
Also was ich für die Abrechnung brauch...
Beim Daten einpflegen benötigt man jedoch andere Spalten.
Und da dann noch Unterschiede, ob mit oder ohne Pächterwechsel.
Einige Bereiche überlappen sich.
Deshalb wollte ich das gezielt Aus-/Einblenden.
Die Standart-Funktionen von Excel ermöglichen das nicht, also musste ich mich zwangsweise mit VBA auseinandersetzen.
In der Tat, für die vier anderen Buttons ist die "vereinfachte Variante" auch ausrechend - vom Code auch nicht umfangreicher.
Wenn es mehr "Knöppe sind, ergibt die Schleife schon Sinn.
Ich wünsche schöne Feiertage und nochmals vielen Dank.
Anzeige
AW: Zustand eines Toggle-Buttons ändern
08.12.2020 21:48:28
onur
Und warum noch "offen" ?
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 06:35:57
Mike_Ehlert
Guten Morgen @onur,
der Aufbau dieses Forums ist für mich etwas ungewohnt.
Einen Gelöst-Button habe ich noch nicht gefunden.
Viele Grüße
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 10:45:59
onur
Es gibt nur ein "Nicht-Gelöst-Button". :)
Anzeige
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 16:56:53
Mike_Ehlert
@onur
Ups?
Also wenn ich den geklickt haben sollte, dann sicher nicht wegen "nicht Gelöst"...
Aber kann mich nicht erinnern, überhaupt einen Button geklickt zu haben... *hhhmmmm...*
Kann das jemand für mich korrigieren?
Viele Grüße Mike
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 17:35:39
onur
"Kann das jemand für mich korrigieren?" - braucht man nicht - wenn du nix anklickst, ist auch nix "offen".
Userbild
Anzeige
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 18:17:33
Mike_Ehlert
@onur
ALLES KLAR - jetzt habe ich meinen Fehler erkannt... *schäm*
Tchja - wer lesen kann, ist klar im Vorteil ;)
AW: Zustand eines Toggle-Buttons ändern
09.12.2020 18:40:45
onur
Nix passiert !
;
Anzeige
Anzeige

Infobox / Tutorial

Zustand eines Toggle-Buttons ändern


Schritt-für-Schritt-Anleitung

Um den Zustand eines Toggle-Buttons in Excel zu ändern und alle anderen Toggle-Buttons zurückzusetzen, kannst du die folgenden Schritte befolgen:

  1. Toggle-Button einfügen: Füge einen Toggle-Button in dein Excel-Dokument ein. Gehe dazu auf die Registerkarte "Entwicklertools", klicke auf "Einfügen" und wähle den "Toggle Button" aus der Liste der ActiveX-Steuerelemente.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen. Hier kannst du den Code für deine Toggle-Buttons bearbeiten.

  3. Code für Toggle-Buttons erstellen: Nutze den folgenden VBA-Code, um den Zustand deines Toggle-Buttons zu ändern und andere Buttons zurückzusetzen:

    Private Sub Alle_Spalten_Einblenden_Click()
       Call Alles_Einblenden
       Dim x As Object
       For Each x In ActiveSheet.OleObjects
           If TypeOf x.Object Is MSForms.ToggleButton Then
               x.Object.Value = False
           End If
       Next x
    End Sub
  4. Makros speichern: Stelle sicher, dass du deine Excel-Datei im Format .xlsm speicherst, damit die Makros erhalten bleiben.

  5. Testen: Teste, ob der Toggle-Button wie gewünscht funktioniert und alle anderen Toggle-Buttons zurücksetzt.


Häufige Fehler und Lösungen

  • Fehler: "Variable nicht definiert"
    Wenn du eine Fehlermeldung erhältst, die besagt, dass die Variable nicht definiert ist, stelle sicher, dass du die Variable x im Code mit Dim x As Object deklariert hast.

  • Fehler: Toggle-Buttons reagieren nicht
    Überprüfe, ob die Toggle-Buttons korrekt benannt sind und sich im richtigen Arbeitsblatt befinden. Du kannst auch die Eigenschaften der Toggle-Buttons in den Entwicklertools prüfen.

  • Fehler: Makro funktioniert nicht
    Wenn das Makro nicht funktioniert, stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu "Datei" > "Optionen" > "Sicherheitscenter" > "Einstellungen für das Sicherheitscenter" und aktiviere die Makros.


Alternative Methoden

Eine alternative Methode, um Toggle-Buttons in Excel zu bearbeiten, ist die Verwendung von Formularsteuerelementen anstelle von ActiveX-Steuerelementen. Diese bieten ähnliche Funktionalitäten, sind jedoch einfacher zu handhaben:

  1. Füge einen Formular-Toggle-Button hinzu.
  2. Verwende die Eigenschaften, um den Zustand zu ändern, ohne VBA zu verwenden.
  3. Verlinke die Schaltflächen zu Zellen, um den Status zu steuern.

Praktische Beispiele

Hier ist ein Beispiel, wie du Toggle-Buttons in einer Excel-Tabelle verwenden kannst:

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        ' Aktion aktivieren
    Else
        ' Aktion deaktivieren
    End If
End Sub

Für mehrere Toggle-Buttons kannst du eine Schleife verwenden, um deren Zustand zu ändern:

Private Sub Alle_Spalten_Einblenden_Click()
    Dim x As Object
    For Each x In ActiveSheet.OleObjects
        If TypeOf x.Object Is MSForms.ToggleButton Then
            x.Object.Value = False
        End If
    Next x
End Sub

Tipps für Profis

  • Benennung der Buttons: Achte darauf, deine Toggle-Buttons sinnvoll zu benennen, damit du sie später im Code leichter identifizieren kannst. Zum Beispiel tb_Einblenden für einen Toggle-Button, der Spalten einblendet.

  • Debugging: Nutze Debug.Print im VBA-Editor, um den aktuellen Zustand von Toggle-Buttons zu überprüfen. Dies hilft dir, Fehler im Code schnell zu identifizieren.

  • Verwendung von Variablen: Wenn du mit mehreren Toggle-Buttons arbeitest, definiere Variablen für jeden Button, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich einen neuen Toggle-Button in Excel einfügen?
Gehe zu "Entwicklertools" > "Einfügen" und wähle den "Toggle Button" aus der Liste der ActiveX-Steuerelemente.

2. Warum funktioniert mein Toggle-Button nicht?
Stelle sicher, dass die Makros aktiviert sind und die Toggle-Buttons korrekt im Arbeitsblatt platziert sind.

3. Wie kann ich die Eigenschaften eines Toggle-Buttons ändern?
Klicke mit der rechten Maustaste auf den Toggle-Button und wähle "Eigenschaften", um die Einstellungen anzupassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige