Actief maken na ja/nee veld

Status
Niet open voor verdere reacties.
Hierbij een heel simpel voorbeeldje, het is al een tijdje geleden dat we het er over hadden gehad, ook in deze topic.

Ik heb 2 vink vakjes:
Vinkvakje 1, zet tekstvak 2 uit, tekstvak 1, aan.
Vinkvakje 2, zet tekstvak 1 uit, tekstvak 2 aan.

Wil ik ze beide aanzetten, werkt dit niet goed, want elke vakje wil weer iets aan en uit zetten.

Je had het over waarde die je mee kunt geven

Vinkvakje, 1 waarde 1
Vinkvakje, 2 waarde 2

Als je beide vinkvakjes aanklik krijg je waarde 3

Bij elke waarde kun je dan een gebeurtenis opgeven
Bij Waarde 3, gaan beide vakjes uit (bijvoorbeeld).
 

Bijlagen

Wat zou je voorbeeld moeten doen bij de verschillende combinaties?

Ik heb 2 vink vakjes:
Vinkvakje 1, zet tekstvak 2 uit, tekstvak 1, aan.
Vinkvakje 2, zet tekstvak 1 uit, tekstvak 2 aan

Bij elke waarde kun je dan een gebeurtenis opgeven
Bij Waarde 3, gaan beide vakjes uit (bijvoorbeeld). .
 
Zoals in het voorbeeld...
(Sorry, soms beschrijf ik mijn vraag voor mijn gevoel duidelijk, voor andere is dit niet duidelijk (dit is helaas een van mijn zwakste kanten).

Bedoeling is:
vinkvakje 1 aan; tekstveld 1 uit tekstvak 2 aan
vinkvakje 2 aan: tekstveld 2 uit testvak 1 aan
Beide aan: tekstveld 1 en 2 uit

Nu kun je beide wel aanvinken maar nu zitten de vinkjes elkaar nog in de weg.
Met andere woorden als ik eerst vinkvakje 1 aanzet (tekstvak 1 gaat uit, tekstvak 2 blijft aan) en vervolgens zet ik een vinkje in vinkvakje 2 dan gaat tekstvakje 1 weer aan (en tekstvakje 2 uit). Zoals ik al aangaf als ik bij beide een vinkje zet moeten beide tekstvakken uit gaan.

(Visible = false / true)

Bedankt voor je (geduldige) hulp;)
 
Volgens mij heb ik 'm dan... Wel een trucje moeten toepassen. Ben benieuwd of je 'm zelf kunt uitvogelen...
 

Bijlagen

MMMM, ja en nee,

Ik snap de VBA in zijn geheel wel..... inderdaad het is de juiste bedoeling.
Met de code uitrekenen geef je elke keer de opdracht om opnieuw te berekenen welke vakjes aan en/of uit moeten, dit is duidelijk.

Daarnaast zag ik dat de 2 vinkvakjes een extra info hadden gekregen (bij eigenschappen) 0 & 1, deze snap ik niet echt....

Het echte verhaal zit volgens mij in de 2 stukjes hieronder, echte logica zie ik hier niet in..
Code:
Option Compare Database
Dim iTot As Integer, i As Integer

Vanaf Case vertel je de voorwaarde, dit snap ik maar het stukje ervoor.... abracadabra.
Code:
Private Sub Uitrekenen()
    
    iTot = 0
    For i = 1 To 2
''        MsgBox Me("chk" & i).Value
        If Me("chk" & i).Value = -1 Then iTot = iTot + Me("chk" & i).Tag
    Next i
    
    Select Case iTot
        Case 0
            Me.Veld1.Enabled = True
            Me.veld2.Enabled = True
        Case 1
            Me.Veld1.Enabled = False
            Me.veld2.Enabled = True
        Case 2
            Me.Veld1.Enabled = True
            Me.veld2.Enabled = False
        Case 3
            Me.Veld1.Enabled = False
            Me.veld2.Enabled = False
    End Select
    Me.Form.Refresh
    Me.Form.Repaint

End Sub
 
Het begin is eigenlijk simpel: ik begin met het declareren van de variabelen. Door dat aan het begin van de module te doen, hoef je niet meer bij elke procedure apart je variabelen te declareren.
Je zit overigens warm, want je hebt het wel gezien ;) De oplossing zit inderdaad in de <Extra info> optie van de checkvelden. Door elk checkveld een eigen waarde te geven, een derde checkbox had de waarde 4 gekregen, kun je door de waarden op te tellen een uniek herleidbaar getal genereren. Bij 2 vakken heb je de opties 0,1,2 en 3, en elk getal staat voor een unieke combinatie.
Vervolgens check je die waarde in de select case procedure, die dus de tekstvelden vervolgens aan- of uitzet.
Hoe meer opties, hoe meer code, dat spreekt...
Bij 3 boxen heb je de combinaties: 0,1,2,3,4, 5, 6 en 7. En zo verder...
<Extra info> heet dus in het Engels <Tag>, en dat is de eigenschap die in de code wordt uitgelezen. Door de checkboxen oplopend te nummeren, kun je ze allemaal in één loop uitlezen, en dat scheelt een hoop code, zoals je ziet.
 
Dan is het opgelost :thumb:

Status: opgelost! ;)

Bedankt alle lezers, met name Octafish!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan