Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
500to504
500to504
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Prinzipielles Problem mit Checkbox

Prinzipielles Problem mit Checkbox
19.10.2004 09:52:54
Ringo
Hallo,
ich hab mal wieder ein an sich kleines Problem, was mich schon seit Tagen beschäftigt. Und zwar habe ich in einer UserForm mehrere Checkboxes, die jeweils eine Option darstellen. Es können eine, mehrere oder alle Optionen gleichzeitig aktiv sein.
Zusätzlich dazu will ich eine Checkbox "alle" haben, bei deren Betätigung folgendes passiert:
- ist die Checkbox "alle" nicht gesetzt und wird gedrückt, dann sollen alle Optionen auf true gesetzt werden
- ist die Checkbox "alle" gesetzt und wird auf false gesetzt, dann sollen alle Optionen auf false gesetzt werden
- zusätzlich soll die checkbox "alle" auf false gesetzt werden, wenn vorher alle Optionen auf true waren und eine beliebige Option auf false gesetzt wird
- dementsprechend soll die checkbox "alle" auch auf true gesetzt werden, wenn der Benutzer per Hand alle Optionen auf true gesetzt hat
Die Frage ist nun ... Wie kann ich das Excel per VBA beibringen? Sind da vielleicht Optionbuttons besser für sowas (obwohl da ja immer nur eine Option pro Gruppe aktiv ist)?
Anbei noch ein Rohgerüst, wie die entsprechende Userform in etwa aussehen soll.
mfg
ringo
https://www.herber.de/bbs/user/12290.xls

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prinzipielles Problem mit Checkbox
Dan
Hi, versuch es mit diesem Code (kommt in den Class Module des User Forms). Gruss Dan,CZ.


Option Explicit
' blnEnableEvents > damit sich die States von chbAlle und den anderen CheckBoxes
' nicht gegenseitig beeinflussen, also wenn blnEnableEvents = False ist,
' werden die Change-Events Procs nicht durchgefuehrt
Private blnEnableEvents As Boolean
Private Sub chbAlle_Change()
    
    Dim ctl As Control
        
    If (blnEnableEvents = FalseThen Exit Sub
            
    For Each ctl In Me.fraOptionen.Controls
        If (VBA.TypeName(ctl) = "CheckBox") Then
        
            blnEnableEvents = False
            ctl.Value = Me.chbAlle.Value
            blnEnableEvents = True
            
        End If
    Next ctl
    
End Sub
Private Sub CheckBox2_Change()
    ' Code
    ' ..............
    
    Call CheckStateOfAll
End Sub
Private Sub CheckBox3_Change()
    ' Code
    ' ..............
    
    Call CheckStateOfAll
End Sub
Private Sub CheckBox4_Change()
    ' Code
    ' ..............
    
    Call CheckStateOfAll
End Sub
Private Sub CheckStateOfAll()
        
    Dim blnStateOfAll As Boolean
    Dim ctl As Control
    
    If (blnEnableEvents = FalseThen Exit Sub
    
    blnStateOfAll = True ' wenn einer seinen Wert aendert, mehmen wir vor,
                         ' dass alle CheckBoxes = True
    
    For Each ctl In Me.fraOptionen.Controls
        If (VBA.TypeName(ctl) = "CheckBox") Then
        
            ' und wenn nur einer = False, dann alle = False
            If (ctl.Value <> blnStateOfAll) Then
                blnStateOfAll = False
                Exit For
            End If
            
        End If
    Next ctl
    blnEnableEvents = False
    Me.chbAlle.Value = blnStateOfAll
    blnEnableEvents = True
    
End Sub
Private Sub UserForm_Initialize()
    blnEnableEvents = True
    
End Sub
Anzeige
AW: Prinzipielles Problem mit Checkbox
Ringo
Danke ... konnte es zwar nicht genau übernehmen, da es aus irgendeinem Grund net funktionieren wollte, aber die Boolean-Variable, die entscheidet ob die Subprozedur ausgeführt wird war die zündende Idee, die mir gefehlt hat.
mfg
Ringo

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige