Checkboxen selecteren

Status
Niet open voor verdere reacties.

fcwiv

Gebruiker
Lid geworden
6 sep 2008
Berichten
43
Beste,
Ik wil graag het volgende doen:
In een vba formulier heb ik 10 checkboxen staan op een rij.
Als ik het eerste aanvinkt , dan wil ik graag dat de andere 9 checkboxen automatisch worden aangevinkt. Als ik het 3de aanvinkt dan worden de 4 tot en met de 10 aangevinkt en NIET de eerste 2.
Ik denk zelf dat ik elke checkbox moet verbinden aan een procedure.
Deze procedure kijkt welke cb ik geselecteerd heb , dan gaat hij vanzelf tot de laatste cb selecteren. De andere cb die ervoor liggen blijven gewooon zo staan(dus worden niet aangevinkt).

Het is meer voor de handigheid.

:thumb:

Alvast vriendelijk bedankt.

Fred
 
Hallo Wigi,
Ik ben nu bezig met experimenteren.
Code:
Public Sub cb(X As Integer)
Dim Cnt As Long
Dim Prd As Long
Prd = 3
    Cnt = X
    
    If Me.Controls("CheckBox" & Cnt).Value = True Then
     Do While Cnt < Prd + 1
        Me.Controls("CheckBox" & Cnt).Value = False
        Cnt = Cnt + 1
     Loop
    
    Else
    
     Do While Cnt < Prd + 1
        Me.Controls("CheckBox" & Cnt).Value = True
        Cnt = Cnt + 1
     Loop
    End If
End Sub
 
Ik begrijp dat stukje met buttons maar je heb 10 checkboxen
Zodra ik op 1 klik dan moet de anderen reageren.
Dan zou dit betekenen dat ik voor elke checkbox_Click event dezelfde code moet gebruiken. Dat lijkt mij te omslachtig.
dus de andere checkboxen reageren meteen als er een cb aangevinkt wordt.

Alvast bedankt.

Fred
 
Bedankt

Alvast bedankt voor uw link.
Code:
Public Sub cb(X As Integer)
Dim Cnt As Long
Dim Prd As Long
Prd = 3
    Cnt = X
    
    If Me.Controls("CheckBox" & Cnt).Value = True Then
     Do While Cnt < Prd + 1
        Me.Controls("CheckBox" & Cnt).Value = False
        Cnt = Cnt + 1
     Loop
    
    Else
    
     Do While Cnt < Prd + 1
        Me.Controls("CheckBox" & Cnt).Value = True
        Cnt = Cnt + 1
     Loop
    End If
End Sub

Code:
Private Sub CommandButton1_Click()
cb (2)
End Sub
 
Ik zou gebruik maken van de zogeheten "Tag" eigenschap van je control (checkboxen).
Zet in deze "tag" eigenschap de nummer 1 t/m 10 (checkbox1 --> tag: 1, checkbox2 --> tag:2, enz).

Maak vervolgens gebruik van de volgende subs:

Code:
Private Sub CheckBox1_Click()
      CheckCtrl CheckBox1.Tag, CheckBox1.Value
End Sub
Private Sub CheckBox2_Click()
      CheckCtrl CheckBox2.Tag, CheckBox2.Value
End Sub
Private Sub CheckBox3_Click()
      CheckCtrl CheckBox3.Tag, CheckBox3.Value
End Sub
Private Sub CheckBox4_Click()
      CheckCtrl CheckBox4.Tag, CheckBox4.Value
End Sub

'enzovoorts


Public Sub CheckCtrl(i As Integer, ToValue As Boolean)
    Dim ctrl As Control
      For Each ctrl In Me.Controls
        'validate if the control is a checkbox
            If IsNumeric(i) Then
                If ctrl.Tag > i Then
                    ctrl.Value = ToValue
                End If
            End If
      Next ctrl
End Sub
 
Bedankt!

:cool:
Bedankt Maurice voor je tip.
Dit geeft mij een nieuweide van hoe ik het ook kan oplossen.





Ik zou gebruik maken van de zogeheten "Tag" eigenschap van je control (checkboxen).
Zet in deze "tag" eigenschap de nummer 1 t/m 10 (checkbox1 --> tag: 1, checkbox2 --> tag:2, enz).

Maak vervolgens gebruik van de volgende subs:

Code:
Private Sub CheckBox1_Click()
      CheckCtrl CheckBox1.Tag, CheckBox1.Value
End Sub
Private Sub CheckBox2_Click()
      CheckCtrl CheckBox2.Tag, CheckBox2.Value
End Sub
Private Sub CheckBox3_Click()
      CheckCtrl CheckBox3.Tag, CheckBox3.Value
End Sub
Private Sub CheckBox4_Click()
      CheckCtrl CheckBox4.Tag, CheckBox4.Value
End Sub

'enzovoorts


Public Sub CheckCtrl(i As Integer, ToValue As Boolean)
    Dim ctrl As Control
      For Each ctrl In Me.Controls
        'validate if the control is a checkbox
            If IsNumeric(i) Then
                If ctrl.Tag > i Then
                    ctrl.Value = ToValue
                End If
            End If
      Next ctrl
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan