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

Forumthread: Togglebutton Zustand auf Ribbon mit vba ändern

Togglebutton Zustand auf Ribbon mit vba ändern
20.03.2018 21:11:27
Klaus
Hallo,
Stehe wohl etwas auf dem Schlauch. Versuche seit einigen Stunden zu verstehen, wie ich den Zustand eines Togglebutton auf meinem Ribbon per vba code ändern kann, ohne den Button mit der Maus zu klicken.
Der Togglebutton blendet eine Userform ein bzw. aus. Das funktioniert soweit schon.
Wenn jedoch die Userform über das 'X' geschlossen wird, bleibt der Togglebutton natürlich gedrückt. Ob das 'X' geklickt wurde, fange ich über UserForm_QueryClose ab und würde in dieser Sub dann auch gerne den Zustand des Togglebutton auf dem Ribbon ändern.
Dazu habe ich versucht, die Sub GetPressedTglButton(control As IRibbonControl, ByRef pressed) aufzurufen bzw. zu benutzen. Das geht aber scheinbar nicht.
Hat jemand von Euch so etwas schon mal gemacht?
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Togglebutton Zustand auf Ribbon mit vba ändern
20.03.2018 21:48:57
mumpel
Hallo!
Das kannst auch im UserForm_QueryClose objRibbon.Invalidate setzen.
Gruß, René
Nachtrag
20.03.2018 21:50:49
mumpel
Also immer über Invalidate aktualisieren.
AW: Nachtrag
21.03.2018 17:54:37
Klaus
Danke für die schnelle Rückmeldung. Werde das gleich so ausprobieren.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Zustand eines Togglebuttons auf dem Ribbon mit VBA ändern


Schritt-für-Schritt-Anleitung

Um den Zustand eines Togglebuttons auf Deinem Ribbon per VBA zu ändern, ohne den Button manuell zu klicken, kannst Du die folgende Vorgehensweise nutzen:

  1. Erstelle eine Userform: Füge eine Userform in Dein Excel-Projekt ein.

  2. Füge einen Togglebutton hinzu: Platziere einen Togglebutton auf der Userform.

  3. Handle das Schließen der Userform:

    • Nutze das Ereignis UserForm_QueryClose, um den Zustand des Togglebuttons zu ändern.
    Private Sub UserForm_QueryClose(Cancel As Integer)
       ' Ändere den Zustand des Togglebuttons auf dem Ribbon
       Dim objRibbon As IRibbonUI
       Set objRibbon = Application.Ribbon
       objRibbon.Invalidate ' Aktualisiere das Ribbon
    End Sub
  4. Implementiere das GetPressedTglButton: Um den Zustand des Togglebuttons zu setzen, rufe die GetPressedTglButton-Methode auf, um den Status zu ändern.

    Sub GetPressedTglButton(control As IRibbonControl, ByRef pressed)
       pressed = (control.ID = "MeinToggleButtonID")
    End Sub
  5. Teste die Funktionalität: Starte die Userform und schließe sie über das 'X', um zu überprüfen, ob der Togglebutton korrekt aktualisiert wird.


Häufige Fehler und Lösungen

  • Fehler: Togglebutton bleibt gedrückt
    Lösung: Stelle sicher, dass Du objRibbon.Invalidate im UserForm_QueryClose-Ereignis verwendest, um das Ribbon zu aktualisieren.

  • Fehler: GetPressedTglButton wird nicht aufgerufen
    Lösung: Überprüfe, ob die ID des Togglebuttons korrekt in der Methode definiert ist. Eine falsche ID führt dazu, dass der Zustand nicht geändert wird.


Alternative Methoden

Wenn Du keinen Togglebutton verwenden möchtest, kannst Du auch andere Steuerelemente im Ribbon verwenden, um die Benutzerinteraktion zu steuern. Hier sind einige Alternativen:

  • Schaltflächen: Verwende einfache Schaltflächen, die eine Aktion auslösen.
  • Menüelemente: Erstelle Dropdown-Menüs, um verschiedene Optionen anzubieten.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie man die oben genannten Konzepte umsetzen kann:

Sub MyRibbonButton_Click(control As IRibbonControl)
    Dim objRibbon As IRibbonUI
    Set objRibbon = Application.Ribbon

    ' Toggle den Zustand des Togglebuttons
    If control.ID = "MeinToggleButtonID" Then
        ' Hier die Logik für den Togglebutton
        objRibbon.Invalidate
    End If
End Sub

Tipps für Profis

  • Verwende IRibbonControl effektiv: Die Nutzung von IRibbonControl kann Dir helfen, die Benutzeroberfläche dynamisch zu gestalten und den Zustand von Steuerelementen einfach zu verwalten.
  • Debugging: Nutze die Debugging-Tools in VBA, um Probleme schnell zu identifizieren, wenn der Togglebutton nicht wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich den Zustand eines Togglebuttons im Ribbon dauerhaft ändern?
Um den Zustand eines Togglebuttons dauerhaft zu ändern, musst Du sicherstellen, dass der Status in einer globalen Variable oder in den Einstellungen gespeichert wird, bevor Du Invalidate aufrufst.

2. Funktioniert das auch in Excel 2016?
Ja, die beschriebenen Methoden und Techniken sind in Excel 2016 und in neueren Versionen anwendbar. Achte darauf, dass die VBA-Referenzen korrekt gesetzt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige