Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Click-Ereignis für Checlbox nicht ausführen?

Betrifft: Click-Ereignis für Checlbox nicht ausführen? von: Jens Meier
Geschrieben am: 01.02.2008 16:26:25

hallo liebe forums-gemeinde,

ich ängere über vba den wert für ein kontrollkästchen (steuerelement-toolbox). ändert sich dabei der status (true auf false oder false auf true), dann wird automatisch das click-ereignis für dieses kontrollkästchen aufgerufen.
lässt sich das irgendwie unterbinden?

d.h.: das click-ereignis soll nur aufgerufen werden, wenn das kontrollkästchen über das arbeitsblatt geklickt wird, aber nicht bei änderungen des wertes im vba-code.

hab bei meinen recherchen keine möglichkeit gefunden. vielleicht könnt ihr mir weiterhelfen.
vielen dank sagt
der jens

  

Betrifft: AW: Click-Ereignis für Checlbox nicht ausführen? von: Detlef
Geschrieben am: 01.02.2008 16:45:56

Hi,

poste mal den Code, der das Ereignis auslöst.

mfg Detlef


  

Betrifft: AW: Click-Ereignis für Checlbox nicht ausführen? von: Jens Meier
Geschrieben am: 01.02.2008 17:08:48

hallo detlef,
hier der codeausschnitt:

Public Sub ShowAllCheckBoxes()
    Dim oWks As Worksheet
    Dim oOLEobj As OLEObject
    On Error Resume Next
    For Each oWks In ActiveWorkbook.Worksheets
        For Each oOLEobj In oWks.OLEObjects
            ' show all checkboxes
            If TypeName(oOLEobj.Object) = "CheckBox" Then _
                oOLEobj.Object = True
        Next oOLEobj
    Next oWks
    Set oWks = Nothing
    Set oOLEobj = Nothing
End Sub




  

Betrifft: AW: Click-Ereignis für Checlbox nicht ausführen? von: Detlef
Geschrieben am: 01.02.2008 17:22:17

Hi,

ich geh mal davon aus, dass der Code in einem Standardmodul steht:

Public jetzt_nicht as Boolean

Public Sub ShowAllCheckBoxes()
    Dim oWks As Worksheet
    Dim oOLEobj As OLEObject
    On Error Resume Next
jetzt_nicht = True
    For Each oWks In ActiveWorkbook.Worksheets
        For Each oOLEobj In oWks.OLEObjects
            ' show all checkboxes
            If TypeName(oOLEobj.Object) = "CheckBox" Then _
                oOLEobj.Object = True
        Next oOLEobj
    Next oWks
    Set oWks = Nothing
    Set oOLEobj = Nothing
jetzt_nicht = False
End Sub



In die Codes der Boxen dann am Anfang folgende Zeile am Anfan:

If jetzt_nicht Then Exit Sub

mfg Detlef


  

Betrifft: AW: Click-Ereignis für Checlbox nicht ausführen? von: Matthias G
Geschrieben am: 01.02.2008 17:22:10

Hallo Jens,

an sich macht das ja Sinn, leider ist der Ereignis nicht durch Application.EnableEvents= False abschaltbar.

Du kannst es aber (etwas aufwendiger) so machen:

- In einem "normalen" Modul definierst du ganz oben vor den Przeduren eine globale Variable:


Public NOCLICK As Boolean


Die Prozedur (und alle, die den Checkbox-Wert ändern, aber kein OnClick-Ereignis auslösen wollen, änderst du auf diese Weise:


Public Sub ShowAllCheckBoxes()
    Dim oWks As Worksheet
    Dim oOLEobj As OLEObject
    On Error Resume Next
NOCLICK = True '############ NEU
    For Each oWks In ActiveWorkbook.Worksheets
        For Each oOLEobj In oWks.OLEObjects
            ' show all checkboxes
            If TypeName(oOLEobj.Object) = "CheckBox" Then _
                oOLEobj.Object = True
        Next oOLEobj
    Next oWks
NOCLICK = False '############ NEU
    Set oWks = Nothing
    Set oOLEobj = Nothing
End Sub


Und in die ganzen OnClick-Prozeduren stellst du ganz am Anfang die Zeile If NOCLICK Then Exit Sub, also z.B. so:


Private Sub CheckBox1_Click()
If NOCLICK Then Exit Sub
MsgBox "CheckBox1 Klick!"
End Sub

Private Sub CheckBox2_Click()
If NOCLICK Then Exit Sub
MsgBox "CheckBox2 Klick!"
End Sub



Gruß Matthias


  

Betrifft: AW: Click-Ereignis für Checlbox nicht ausführen? von: Jens Meier
Geschrieben am: 01.02.2008 18:46:18

hallo matthias und detlef,

danke für eure antworten, die ja im prinzip das gleiche vorschlagen. schade, dass es nicht ohne diesen nicht wirklich eleganten umweg geht. aber hauptsache es funktioniert! ;-)
danke nochmal für eure hilfe!

der jens


 

Beiträge aus den Excel-Beispielen zum Thema "Click-Ereignis für Checlbox nicht ausführen?"