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

Forumthread: togglebutton

togglebutton
Herbert
Hallo!
Ich möchte 2 Togglebuttons in einer UserForm zum Umschalten verwenden.

Private Sub ToggleButton1_Click()
ToggleButton1.Value = True
ToggleButton2.Value = False
call irgendwas1
End Sub

Private Sub ToggleButton2_Click()
ToggleButton2.Value = True
ToggleButton1.Value = False
Call irgendwas2
End Sub

Geht ja, ABER ..
Sobald die UserForm Eigenschaft "showModal" auf "False" ist, funktioniert die Umschaltung nicht mehr, bei "True" schon. Leider kann man die Eigenschaft "showModal" per VBA nicht umschalten, da sie nicht angeboten wird und im Code als Fehler (gibts nicht) bemurrt wird. Ich benötige aber die Eigenschaft "showModal" in True, da eine direkt Eingabe am Tabellenblatt und von der Userform möglich sein muss.
Klar, ich kann auch das Optionsfeld verwenden (funkt problemlos). Will aber haben, da der ToggleButton logischer ist.
An welchen Rädchen muss ich wohl drehen?
Herzlichst
Herbert
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: togglebutton
01.01.2012 11:00:18
Beverly
Hi Herbert,
Sub Start()
UserForm1.Show vbModeless
End Sub



warum sollte das denn nicht gehen
01.01.2012 12:09:27
Matthias
Hallo Herbert
Zuerstmal wünsche ich allen Forumteinehmern ein gesundes neues Jahr!
Zum Thema:
Es ist doch vollkommen egal ob das Formular gebunden oder ungebunden angezeigt wird.
Das Umschalten geht doch trotzdem.
Würde mich wundern wenn das in XL2010 nicht mehr geht
Porbier mal:
https://www.herber.de/bbs/user/78153.xls
Gruß Matthias
Anzeige
AW: warum sollte das denn nicht gehen
01.01.2012 19:00:20
Herbert
Danke Matthias!
Eh klar- Ein erfolgreiches Jahr 2012 soll den Mitgliedern des Excel-Forums beschieden sein!!!!!!
Besonders, wenn gleich noch heute eine Antwort kommt- nehme an: begeisterte Exceler!
Mit Herbers VBA geht das. Danke für die Lösung:
ToggleButton2.Value = Not ToggleButton1.Value
Wie kommt man auf sowas?
Prosit 2012
Herbert
Anzeige
Prosit 2012 ;-)
01.01.2012 19:14:32
Matthias
.
AW: warum sollte das denn nicht gehen
01.01.2012 19:57:01
Reinhard
Hallo Herbert,
stimmt dein Level?
Du hast gewählt Excel-Profi und Vba gut.
Dann bist du erstaunt über:
ToggleButton2.Value = Not ToggleButton1.Value
Okay, wie staunst du dann erst über diesen durchaus sinnvollen Befehl:
Range("A1:D100").Value=Range("A1:D100").Value
?
:-)
Gruß
Reinhard
Anzeige
AW: warum sollte das denn nicht gehen
02.01.2012 07:48:37
Herbert
Sorry, aber Profi bin ich keiner - habe da was falsch angeklickt. Bisher habe ich vieles selbst lösen können - daher VBA gut.
Gruss herbert.
AW: togglebutton
01.01.2012 19:44:25
Luschi
Hallo Herbert,
wenn Du Dir in beide Ereignisroutinen der Togglebuttons eine MsgBox-Meldung reinsetzt, wirst Du erkennnen, daß hier beim Drücken auf ToggleButton2 eine immer wiederkehrende Meldungsbox erscheint.
Der Vba-Code rennt jetzt in Kreis in einer Dauerschleife.
ToggleButton1.Value = True bedeutet nicht nur, das diese Box den sichtbaren gedrückten Zustand und einnimmt, sondern Excel wertet das so, als ob der User mit der Maus im Formular auf dieses ToggleButton1 gedrückt hat.
Also wird die Ereignis-Rounine 'Private Sub ToggleButton1_Click()' ausgelöst und Togglebutton2 wieder auf 'nicht gedrückt' gestellt - damit wird die Ereignis-Rounine 'Private Sub ToggleButton2_Click()' ausgelöst und das Spielchen geht von vorne los.
Warum es im modalen Zustand scheinbar funktioniert, ist das Geheimnis von Excel 2010 - denn in Excel 2003 funktioniert es auch modal nicht.
Da das Ausschalten der Vba-Ereignisroutien (Application.EnableEvents = False) auf Steuerelement-Ereignisse im Formular nicht wirken, wird Dir wohl nichts weiter übrig bleiben, eine klug durchdacht Logik selbst auszutüffteln, indem Variablen vom Typ Boolean das Verhalten steuern.
Aber warum willst Du, das sich ToggleButtons gegeseitig in die Suppe spucken und sich gegenseitig im Status ändern. Was soll damit erreicht werden?
fragt sich Luschi
aus klein-Paris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Togglebutton in Excel VBA: Eine Anleitung


Schritt-für-Schritt-Anleitung

Um einen VBA Togglebutton in einer UserForm zu verwenden, folge diesen Schritten:

  1. UserForm erstellen: Öffne den VBA-Editor (Alt + F11) und füge eine neue UserForm hinzu.

  2. ToggleButton einfügen: Füge zwei ToggleButtons (ToggleButton1 und ToggleButton2) in die UserForm ein. Dazu gehst du in das Toolbox-Fenster und ziehst die ToggleButtons auf die UserForm.

  3. Code für die ToggleButtons: Klicke mit der rechten Maustaste auf die UserForm und wähle "Code anzeigen". Füge den folgenden Code ein:

    Private Sub ToggleButton1_Click()
       ToggleButton1.Value = True
       ToggleButton2.Value = False
       Call irgendwas1
    End Sub
    
    Private Sub ToggleButton2_Click()
       ToggleButton2.Value = True
       ToggleButton1.Value = False
       Call irgendwas2
    End Sub
  4. Formular anzeigen: Um das Formular anzuzeigen, nutze den folgenden Code in einem Modul:

    Sub Start()
       UserForm1.Show vbModeless
    End Sub
  5. Ereignisbehandlung: Stelle sicher, dass du den Code so anpasst, dass er keine Endlosschleifen erzeugt, wenn ToggleButtons miteinander interagieren.


Häufige Fehler und Lösungen

  • Endlosschleife bei ToggleButtons: Wenn du ToggleButton1 und ToggleButton2 so codierst, dass sie sich gegenseitig aktivieren, kann dies zu einer Endlosschleife führen. Verwende Boolean-Variablen, um den Zustand zu steuern und unnötige Schaltungen zu vermeiden.

  • ShowModal-Einstellung: Die Eigenschaft showModal kann in VBA nicht zur Laufzeit geändert werden. Setze sie in den Eigenschaften der UserForm auf True, um sicherzustellen, dass Eingaben direkt am Tabellenblatt möglich sind.


Alternative Methoden

Wenn du den Excel Toggle Button nicht verwenden möchtest, kannst du auch Optionsfelder (OptionButton) oder einfache Schaltflächen (CommandButton) nutzen, um ähnliche Funktionen zu erstellen. Diese Steuerelemente bieten mehr Flexibilität und verhindern Interaktionsprobleme.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die ToggleButtons nutzen kannst, um unterschiedliche Aktionen auszuführen:

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value Then
        MsgBox "ToggleButton1 ist aktiviert"
    End If
End Sub

Private Sub ToggleButton2_Click()
    If ToggleButton2.Value Then
        MsgBox "ToggleButton2 ist aktiviert"
    End If
End Sub

Durch das Anzeigen von Meldungsboxen kannst du die Interaktion der Benutzer mit den ToggleButtons besser verstehen.


Tipps für Profis

  • Verwende Application.EnableEvents = False: Dies kann helfen, unerwünschte Ereignisse zu verhindern, wenn du ToggleButtons in einem komplexeren Setup verwendest.

  • Boolean-Variablen: Sieh dir an, wie du mit Boolean-Variablen den Status der ToggleButtons steuern kannst, um die Logik zu vereinfachen.

  • Dokumentation: Halte deine VBA-Module gut dokumentiert, damit du später leichter nachvollziehen kannst, wie die ToggleButtons konfiguriert sind.


FAQ: Häufige Fragen

1. Wie kann ich ToggleButtons in einer UserForm nutzen?
Du kannst ToggleButtons in einer UserForm erstellen, indem du sie aus der Toolbox hinzufügst und entsprechende Ereignisprozeduren schreibst.

2. Was mache ich, wenn die ToggleButtons nicht funktionieren?
Überprüfe den Code auf Endlosschleifen und achte darauf, dass die Eigenschaften der UserForm korrekt eingestellt sind, insbesondere die showModal-Eigenschaft.

3. Gibt es eine Alternative zu ToggleButtons?
Ja, du kannst auch Optionsfelder oder Schaltflächen verwenden, um ähnliche Funktionalitäten zu erreichen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige