Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Click-Ereignis bei Togglebutton

Click-Ereignis bei Togglebutton
02.09.2005 10:11:10
Stephan
Hallo Leute!
Folgendes Problem: Habe in einem Worksheet 2 Togglebuttons, wobei diese jeweils nur abwechselnd aktivierbar sein sollen. Siehe dazu untenstehenden Code. Das Problem dabei ist, dass das Click-Ereignis auch dann ausgelöst wird, wenn ich im VBA-Code den Wert (Value) eines Toggle-Buttons verändere. Dies bewirkt, dass die MsgBox zweimal erscheint.
Wie kann ich verhindern, dass bei einer Änderung von ToggleButton.Value das Click-Event ausgelöst wird?
Danke, Stephan

Private Sub ToggleButton2_Click()
If ToggleButton1.Value = True Then
ToggleButton2.Value = False
MsgBox "Please cancel the activated filter (yellow button)!"
Exit Sub
End If
If ToggleButton2 Then
ToggleButton2.Caption = "show all"
ToggleButton2.BackColor = RGB(255, 255, 0)
Selection.AutoFilter Field:=49, Criteria1:="y"
Else
ToggleButton2.Caption = "delayed end"
ActiveSheet.ShowAllData
ToggleButton2.BackColor = RGB(239, 239, 239)
End If
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
ereignisse ausschalten
02.09.2005 10:14:21
ransi
Hallo stefan
schau dir mal "application.EnableEvents" an.
ransi
AW: ereignisse ausschalten
02.09.2005 10:26:27
Stephan
Hallo Ransi,
danke für den Tipp, ich bekomme es leider nicht hin.
Wie muss ich application.EnableEvents in meinem Fall verwenden?
Danke für deine Hilfe!
AW: Click-Ereignis bei Togglebutton
ransi
hallo stefan
ungetestet:
Private Sub ToggleButton2_Click()
If ToggleButton1.Value = True Then
application.EnableEvents=false
ToggleButton2.Value = False
application.EnableEvents=true
MsgBox "Please cancel the activated filter (yellow button)!"
Exit Sub
End If
'
'
ransi
Anzeige
AW: Click-Ereignis bei Togglebutton
02.09.2005 11:07:02
Stephan
Hallo Ransi,
das hatte ich auch schon probiert - funktioniert leider nicht.
Hast du noch eine Idee?
LG, Stephan
keine weiter idee....
ransi
hallo stefan
...darum "Frage noch offen".
sorry
ransi
AW: Click-Ereignis bei Togglebutton
02.09.2005 14:13:31
Heiko
Hallo Stephan,
da mußt du wohl mit Boolean Variablen Abhilfe schaffen. Wenn der TGButton per VBA verändert wird eine Variable auf TRUE. Im Click Ereignis diese Variable abfragen und wenn TRUE dann wieder False und raus aus dem Sub.
Siehe Beispielcode, Worksheet mit zwei TGButton und zwei Commandbuttons.
Option Explicit
Public blnTGButton1 As Boolean, blnTGButton2 As Boolean

Private Sub CommandButton1_Click()
blnTGButton1 = True
Me.ToggleButton1.Value = False
End Sub


Private Sub CommandButton2_Click()
blnTGButton2 = True
Me.ToggleButton2.Value = False
End Sub


Private Sub ToggleButton1_Click()
If blnTGButton1 = True Then
blnTGButton1 = False
Exit Sub
Else
MsgBox "Toggle Button 1111111   !", vbInformation
MsgBox Me.ToggleButton2.Value
End If
End Sub


Private Sub ToggleButton2_Click()
If blnTGButton2 = True Then
blnTGButton2 = False
Exit Sub
Else
MsgBox "Toggle Button 1111111   !", vbInformation
MsgBox Me.ToggleButton1.Value
End If
End Sub


Gruß Heiko

PS: Rückmeldung wäre nett !
Anzeige
AW: Click-Ereignis bei Togglebutton
02.09.2005 16:33:17
Stephan
Hallo Heiko - werde ich probieren, vielen Dank!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Click-Ereignis bei Togglebutton in Excel VBA


Schritt-für-Schritt-Anleitung

Um das Click-Ereignis bei einem Togglebutton in Excel VBA zu steuern, kannst du folgende Schritte befolgen:

  1. Erstelle ein UserForm mit zwei Togglebuttons, z.B. ToggleButton1 und ToggleButton2.

  2. Füge einen Click-Ereignis-Handler für beide Togglebuttons hinzu. Verwende dazu den folgenden Beispielcode:

    Private Sub ToggleButton1_Click()
        ' Prüfen, ob der ToggleButton2 aktiviert ist
        If ToggleButton2.Value = True Then
            ToggleButton2.Value = False
            MsgBox "ToggleButton2 wurde deaktiviert."
        End If
    End Sub
    
    Private Sub ToggleButton2_Click()
        ' Prüfen, ob der ToggleButton1 aktiviert ist
        If ToggleButton1.Value = True Then
            ToggleButton1.Value = False
            MsgBox "ToggleButton1 wurde deaktiviert."
        End If
    End Sub
  3. Verwende Application.EnableEvents, um das Click-Ereignis zu unterdrücken, während du den Wert des Togglebuttons im Code änderst:

    Private Sub ToggleButton2_Click()
        Application.EnableEvents = False
        ToggleButton2.Value = False
        MsgBox "Bitte deaktiviere den aktiven Filter!"
        Application.EnableEvents = True
    End Sub
  4. Boolean-Variablen können helfen, das Click-Ereignis zu steuern. Deklariere eine Variable für jeden Togglebutton und prüfe ihren Status im Click-Ereignis.


Häufige Fehler und Lösungen

  • Fehler: Click-Ereignis wird doppelt ausgelöst.

    • Lösung: Stelle sicher, dass Application.EnableEvents vor der Änderung des Togglebutton-Werts auf False gesetzt wird und danach wieder auf True.
  • Fehler: MsgBox erscheint nicht wie gewünscht.

    • Lösung: Überprüfe, ob die Boolean-Variablen korrekt gesetzt und zurückgesetzt werden.
  • Fehler: Togglebuttons können nicht abwechselnd aktiviert werden.

    • Lösung: Implementiere die Logik, dass beim Aktivieren eines Togglebuttons der andere sofort deaktiviert wird.

Alternative Methoden

Falls du eine andere Methode zur Steuerung von Togglebuttons in Excel VBA ausprobieren möchtest, kannst du auch die Switch-Funktion verwenden. Diese Funktion erlaubt es dir, verschiedene Bedingungen in einer einzigen Zeile zu überprüfen. Hier ist ein Beispiel:

Private Sub ToggleButton_Click()
    Select Case True
        Case ToggleButton1.Value
            ToggleButton2.Value = False
        Case ToggleButton2.Value
            ToggleButton1.Value = False
    End Select
End Sub

Praktische Beispiele

  1. Zwei Togglebuttons in einem UserForm: Verwende das folgende Beispiel, um Togglebuttons zu erstellen, die sich gegenseitig beeinflussen.

    Private Sub ToggleButton1_Click()
        If ToggleButton1.Value Then
            ToggleButton2.Value = False
        End If
    End Sub
    
    Private Sub ToggleButton2_Click()
        If ToggleButton2.Value Then
            ToggleButton1.Value = False
        End If
    End Sub
  2. Verwendung von vba toggle button abfragen: Um den Status der Togglebuttons abzufragen, kannst du die entsprechenden Werte in einer MsgBox anzeigen.

Private Sub CommandButton1_Click()
    MsgBox "ToggleButton1 ist " & ToggleButton1.Value & " und ToggleButton2 ist " & ToggleButton2.Value
End Sub

Tipps für Profis

  • Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
  • Nutze Fehlerbehandlung mit On Error Resume Next, um unerwartete Fehler während der Ausführung zu vermeiden.
  • Module für häufige Funktionen erstellen: Wenn du oft ähnliche Logik verwendest, erstelle ein Modul mit häufig wiederverwendbaren Funktionen.

FAQ: Häufige Fragen

1. Wie verhindere ich, dass das Click-Ereignis bei einer Programmänderung ausgelöst wird? Setze Application.EnableEvents auf False, bevor du den Wert des Togglebuttons änderst, und setze es danach wieder auf True.

2. Kann ich mehrere Togglebuttons gleichzeitig verwenden? Ja, du kannst mehrere Togglebuttons in einem UserForm verwenden. Stelle sicher, dass ihre Logik sich gegenseitig beeinflusst, um Konflikte zu vermeiden.

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