Deel geselcteerd

Status
Niet open voor verdere reacties.

basboy1991

Gebruiker
Lid geworden
18 apr 2012
Berichten
43
Beste allemaal,

in VBA ben ik bezig met een userform die een lijst laat zien met sheets die je wil uitdraaien. nu heb ik een knop waarin je alles kan selecteren en deselecteren, die werkt maar ik zou graag het vinkje laten veranderen in een ander object (zwart hokje bijvoorbeeld) wanneer een gebruiker 1 van de dingen deselecteert.

is dit mogelijk of niet?

HTML:
Private Sub log26_Click()

If log26.Value = True Then
Log1.Value = True
log2.Value = True
log3.Value = True
log4.Value = True
log5.Value = True
log6.Value = True

End If
If log26.Value = False Then
Log1.Value = False
log2.Value = False
log3.Value = False
log4.Value = False
log5.Value = False
log6.Value = false

End If

End Sub
dit is de code die ik nu heb.
 
Dat kan je doen door er 2 shapes voor te gebruiken met bijvoorbeeld verschillende kleuren. Denk aan 2 vierkantjes, 1 met een witte opvulling en 1 met een zwarte opvulling. Of een ToggleButton (Wisselknop).

Bovenstaande code kan je overigens ook zo doen:
Code:
Private Sub log26_Click()
    Log1 = log26
    Log2 = log26
    Log3 = log26
    Log4 = log26
    Log5 = log26
    Log6 = log26
End Sub
 
Laatst bewerkt:
Dat ligt eraan welke van de voorgestelde opties je wilt gebruiken. En is dat in een userform of in een werkblad?
 
okee, het gaat om een userform. (kan niet bij het document maar heb een screenshot, van een oudere versie.)

screenshot.jpg

feitelijk heb ik een document gemaakt met veel verschillende tabbladen. inclusief selectievakje voor iedere speciefieke sheet.
ook heb ik op het userform zelf een vakje gemaakt om alles in 1 keer te selecteren. vaak zie je dat als er 1 ding gedeselecteerd wordt in plaats van een vinkje dus een zwart vakje komt, ik kom alleen echt niet achter een code
 
Als je dat document hier kan plaatsen wil ik er wel even naar kijken.
 
Zal ik vanavond naar kijken, als niemand me voor is.
 
hmm volgende code werkt ongeveer niet zoals het moet misschien is hier nog iets te behalen. als je namelijk 2 keer klikt wordt hij grijs en dan pas selecteert hij alles. als ik dan 1 ding de selecteer doet hij verder niks. ik heb nu bijgevoegde code
HTML:
Private Sub log26_Click()
log26.TripleState = True
If Me.MultiPage1.Value = True And False Then

Value.log26 = Null

End If

    Log1 = log26
    log2 = log26
    log3 = log26
    Log4 = log26
    Log5 = log26
    Log6 = log26



End Sub
 
Waarom zet je de TripleState dan ook op True? Een selectievakje zou maar 2 standen moeten hebben: aan of uit. En jij hebt daar nu dus niet-geselecteerd bij gezet. Niet doen, al was het maar omdat de selectievakjes zelf die state niet hebben en er dus niks gebeurt. En de lus kan een heel stuk simpeler:
Code:
Dim i As Integer
    Me.log26.TripleState = False
    If Me.MultiPage1.Value = True And False Then Value.log26 = Null
    For i = 1 To 3 '26
        Me("log" & i) = Me.log26
    Next i
Ik heb er even een 3 in gezet, omdat je geen 26 vakjes hebt in je voorbeeldje. Maar dat aantal kun je dus simpel veranderen.
 
bedankt maar het is nog niet de oplossing die ik zoek. de checkbox kan aan en uit maar wat ik wil is als de waarde van 1 van de boxen veranderd hij wordt weergeven als zwart vlakje (of zoals nu door grijs vinkje) maar dit wil hij nog niet echt doen helaas
 
Er staan 2 CheckBoxes in je formulier. Je wilt dus dat als de waarde van 1 van die checkboxen veranderd, deze een grijs vinkje krijgt? Dan moet je dus die triple state op True zetten de de checkbox de waarde Null geven.
 
Laatst bewerkt:
precies er staat overigens op tab 3 nog een checkbox tot dit bestand maar op 1 of andere manier als ik die checkboxen binnen het script aanzet doet hij het niks (box alles selecteren blijft zwart aangevinkt)
 
Dit zou ongeveer moeten doen wat je wilt. Omdat je de TripleState nodig hebt, is die moeilijk te omzeilen bij het klikken. Maar het werkt nu wel volgens mij.
 

Bijlagen

Ja hij werkt maar slechts 1 keer kunnen we hier nog iets mee doen?

HTML:
Private Sub Log1_Click()
    bChk = False
    SetNull
End Sub

Private Sub log2_Click()
    bChk = False
    SetNull
End Sub

Private Sub log3_Click()
    bChk = False
    SetNull
End Sub

Private Sub log26_Click()
Dim i As Integer
    bChk = True
    Application.EnableEvents = False
    SetNull
    Application.EnableEvents = True
End Sub

Function SetNull()
Dim j As Integer
    Application.EnableEvents = False
If bChk = True Then
    For i = 1 To 3 '26
        If Me.log26 = Null Or Me.log26 = 0 Then
            Me("log" & i) = False
            Me.log26 = False
        Else
            Me("log" & i) = True
        End If
    Next i
Else
    For i = 1 To 3 '26
        If Me("log" & i) = True Then j = j + 1
    Next i
    Select Case j
        Case 0
            Me.log26 = False
        Case i - 1
            Me.log26 = True
        Case Else
            Me.log26.TripleState = True
            Me.log26 = Null
    End Select
End If
    Application.EnableEvents = True
End Function
 
Hoezo werkt hij maar één keer? Ik kan continue wisselen van selecties.
 
bij mij wordt hij 1 keer grijs en daarna moet ik 2 keer klikken voor hij weer alles selecteerd ;)
 
Dat komt dus, zoals ik al uitlegde, omdat het vakje een TripleState heeft. Ik zou het zelf anders oplossen met een (verder niet klikbaar) object dat de selectiestatus toont en log26 dus alleen gebruiken om alles of niks te selecteren.
 
aha daar moet ik mij nog maar eens in verdiepen ;) ik heb hem nu anders gedaan met een knop om in 1 keer alles te printen werkt ook wel erg makkelijk :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan