• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Checkboxen eenvoudig op waarde checken

Status
Niet open voor verdere reacties.

mulderwme

Gebruiker
Lid geworden
12 dec 2014
Berichten
210
Hallo allemaal,

Ik heb 10 functies: A, B, C, D, enz.

In een form heb ik voor elke functie een checkbox.

Voor een bepaalde berekening wil ik 1 of meerdere functies uitsluiten.

Bijv. als checkbox2 en checkbox3 aangevinkt zijn (true), wil ik met een exit sub eruit.

Nu kan ik een heel aantal if constructies maken, maar is er een simpele korte code om dit te doen?

Iets met alle waarden in één variabele opvangen en dan kijken of functie B of C daarin voorkomen.

Alvast bedankt!
Willem
 
Uuuuhhh.... :shocked:
 
Ok ;)

Probeer eens of dit is wat je bedoelt:
Code:
Private Sub CommandButton1_Click()
    Application.ScreenUpdating = False
    For Each cl In Range("A4:A" & Range("A4").CurrentRegion.Rows.Count + 3)
        If cl.Value >= DateValue(TextBox1.Text) And cl.Value <= DateValue(TextBox2.Text) Then
            For i = 2 To 13
                Cells(cl.Row, i) = IIf(Me.Controls("CheckBox" & Asc(Cells(2, i)) - 64), "", "x")
            Next i
        End If
    Next cl
    Application.ScreenUpdating = True
End Sub
 
Laatst bewerkt:
Dank je wel, Edmoor!

Ik had er waarschijnlijk 150 regels voor nodig gehad.
Dit is precies wat ik bedoelde!
 
Graag gedaan :)
Wel nog iets aangepast.
 
Hallo Edmoor,

Ik bleek toch iets te snel met mijn reactie dat dit precies was wat ik zocht.

Toen ik ging kijken wat de code "Kruisje(i) = IIf(Me.Controls("CheckBox" & i), True, False)" deed, ontdekte ik dat mijn voorbeeld niet helemaal compleet was. :eek:
Ik had een simpel voorbeeld gemaakt met 1 letter, maar de functies bestaan uit meer tekst, waarbij het kan dat andere functies ook met een A of B kunnen beginnen.

Ik heb het bestandje weer bijgevoegd.

groet
Willem
 

Bijlagen

  • Checkboxen V2.xlsm
    18,6 KB · Weergaven: 41
Zo zie je maar hoe duidelijk een voorbeeld moet zijn. Vandaag heb ik er helaas geen tijd meer voor.
 
Snap ik! Als ik duidelijker was geweest...

Ik zag maar één oplossing: checkbox vergelijken met de functie. Dus ik dacht: ik houd het kort. Te kort, blijkt.
Geen idee dat je ook op een andere manier naar zo'n checkbox kon kijken.

Goed weekend!
 
1. Wat het resultaat moet zijn is me evenmin duidelijk.
2. Haal svp de taalfout uit het userform.
3. het is handig als er een correspondentie is tussen de termen in het werkblad en de teksten van de vinkvakken.

Code:
Private Sub CommandButton1_Click()
    sn = Cells(1).CurrentRegion
    sp = Cells(4, 1).CurrentRegion.Resize(, 2)
    
    For Each it In Controls
        If TypeName(it) = "CheckBox" Then If it Then c00 = c00 & "|" & it.Caption
    Next
    For jj = 2 To UBound(sn, 2)
        If InStr(c00, sn(2, jj)) = 0 Then c01 = c01 & "|" & sn(1, jj)
    Next

    For j = DateValue(TextBox1.Text) - Cells(4, 1) To DateValue(TextBox1.Text) - Cells(4, 1) + DateValue(TextBox2.Text) - DateValue(TextBox1.Text)
      sp(j, 2) = c01
    Next
    
    Cells(4, 1).CurrentRegion.Resize(, 2) = sp
End Sub
 
Hallo snb,

Je zou je kunnen voorstellen dat dit een soort rooster is, waarbij een paar functies niet aan de beurt zijn.
De functienamen in rij 2 komen overeen met de caption van de checkboxen.

Je kunt natuurlijk ook default alle checkboxen vullen en uitvinken wie niet aan de beurt zijn.
Technisch zal dat wel niet veel uitmaken.

De code die Edmoor heeft geschreven voor checkboxen.xlsm werkt goed, alleen de functienaam bestaat niet uit 1 maar uit meer letters.
Daar had ik even geen rekening meegehouden.

Groet
Willem
 
Probeer dit eens:
Code:
Private Sub CommandButton1_Click()
    For i = 1 To 10
        If Me.Controls("CheckBox" & i) Then FUN = FUN & "|" & Me.Controls("CheckBox" & i).Caption
    Next i

    Application.ScreenUpdating = False
    RGL = Range("A4").CurrentRegion.Rows.Count + 3
    Range("B4:M" & RGL).ClearContents
    For Each cl In Range("A4:A" & RGL)
        If cl.Value >= DateValue(TextBox1.Text) And cl.Value <= DateValue(TextBox2.Text) Then
            For i = 2 To 13
                Cells(cl.Row, i) = IIf(InStr(1, FUN, Cells(2, i), vbBinaryCompare) = 0, "x", "")
            Next i
        End If
    Next cl
    Application.ScreenUpdating = True
End Sub

En inderdaad, "een functies" is geen correct Nederlands.
 
Laatst bewerkt:
Bedankt Edmoor! Toch nog tijd gevonden, blijkbaar?

Heel interessant zoals je dit hebt gedaan!

Ik ben nu een beetje voorzichtiger, maar het lijkt erop dat ik dit wilde :)

groet
Willem
 
Er zit nog 1 addertje onder het gras.
Ik heb de functie Con en Contr.

Als ik Contr aanvink, wordt ook Con uitgeschakeld, want Con komt voor in Contr.
Door aan Con een letter toe te voegen is het probleem opgelost.

Is er wel een andere functie dan instr die de hele tekst vergelijkt?

groet
Willem
 
Plaats je bestand.
 
Maak er dan dit van:
Code:
Private Sub CommandButton1_Click()
    BDT = DateValue(TextBox1.Text)
    EDT = DateValue(TextBox2.Text)
    RGL = Range("A4").CurrentRegion.Rows.Count + 3
    
    For i = 1 To 10
        If Me.Controls("CheckBox" & i) Then FUN = FUN & "|" & Me.Controls("CheckBox" & i).Caption
    Next i
    FUN = FUN & "|"
    
    Application.ScreenUpdating = False
    Range("B4:M" & RGL).ClearContents
    For Each cl In Range("A4:A" & RGL)
        If cl.Value >= BDT And cl.Value <= EDT Then
            For i = 2 To 13
                Cells(cl.Row, i) = IIf(InStr(1, FUN, Cells(2, i) & "|", vbBinaryCompare) = 0, "x", "")
            Next i
        End If
    Next cl
    Application.ScreenUpdating = True
End Sub
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan