• 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.

Hulp gevraagd met VBA (chechbox en Optionbuttons)

Status
Niet open voor verdere reacties.

koosl

Gebruiker
Lid geworden
7 jan 2006
Berichten
319
Ik heb hier zelf al mee lopen stoeien maar ik kom er niet uit.


Als ik voor een Mixer kies (rij 11+12) dan moet het vinkje bij rij 53 aan gaan en mag niet uitgezet kunnen worden. Maar rij 54 mag je dan niet aan kunnen vinken.

Als ik kies voor een Buffer kies (rij 14+15+16) dan moet het vinkje bij rij 54 aangaan en mag niet uitgezet kunnen worden. Maar rij 53 mag je dan niet aan kunnen vinken.

Alleen als ik voor Mixer (rij 11+12) of Buffer (rij 14+15+16) kies moet het vinkje verzet worden.

Het gaat over de Sub VerplichtBijMixerKeuze en Sub VerplichtBijBufferKeuze.


Succes,

Koosl
 

Bijlagen

Hallo,

Je was goed op weg. Alleen was je vergeten om in de code de checkboxen inactief te maken.
Je kan nog wel de vinkjes (via de code) neer zetten door een selectie te maken in de regels 11 t/m 16, maar je kan de checkboxen niet meer aanklikken.

Ik hoop dat hiermee je probleem is opgelost.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Perfect Roncancio :thumb:
Blij dat je weer mee doet! :)

Koosl

Verder heb ik nog een vraag, hoe kan ik er voor zorgen dat als je op een checkbox of optionbutton rechtsklikt, dat het dan niet geselecteerd kan worden?
Het werkblad is dan wel beveiligd.


Koosl
 
Perfect Roncancio :thumb:
Blij dat je weer mee doet! :)

Graag gedaan.:)
Ik heb het een tijdje rustig aangedaan.:cool:

Verder heb ik nog een vraag, hoe kan ik er voor zorgen dat als je op een checkbox of optionbutton rechtsklikt, dat het dan niet geselecteerd kan worden?
Het werkblad is dan wel beveiligd.

Dan moet je andere checkboxen / optionbuttons gebruiken. Namelijk degene onder: Beeld - Werkbalken -Besturingselementen. De code zal dan ook wat aangepast moeten worden. Wat je kan doen is die checkboxen / optionbuttons toevoegen en in de code verwijzen naar je macro's.

Dus bijvoorbeeld:

Private Sub Chk_Regel11_Click()
If Chk_Regel11 = true then
VerplichtBijMixerKeuze
End If
End Sub

De macro VerplichtBijMixerKeuze wordt gestart als de checkbox Chk_Regel11 aangevinkt wordt.
 
Da's niet zo mooi. :(
Ik was bijna klaar. Nou bijna....

Roncancio, ik snap nog niet helemaal hoe je het hebt opgelost.

Code:
ActiveSheet.Shapes("AlsMixerKeuze").Select
        Selection.Value = xlOn
        Selection.Enabled = False

Als ik er nu zelf een aan toevoeg, dan kan ik de cel niet meer met de muis benaderen. Er komt dan een kruisje overheen netzoals je krijgt als je bv: een tekstvak wilt verzetten. Alleen je kunt niets verzetten.

Code:
Sub VerplichtBijMixerkeuze()
' Code zorgt dat het vinkje aangezet wordt als er voor een Mixer (groep 40) gekozen is.
' vinkje mag dan niet afgezet kunnen worden.
' Code door Koosl    
 ActiveSheet.Shapes("chkbMixerBrineNozzle").Select
   Selection.Value = xlOff
   ActiveSheet.Shapes("obMixer5,5Kw").Select
   If Selection.Value = xlOn Then
        ActiveSheet.Shapes("AlsMixerKeuze").Select
        Selection.Value = xlOn
        Selection.Enabled = False  'zorgt er voor dat je de knop niet af kunt zetten
        [B][COLOR="Red"]ActiveSheet.Shapes("chkbMixerBrineNozzle").Select
        Selection.Value = xlOn[/COLOR][/B]
 [B][COLOR="Red"]       Selection.Enabled = True  'zorgt er voor dat je de knop niet af kunt zetten[/COLOR][/B]
        ActiveSheet.Shapes("AlsBufferKeuze").Select  'mixer? dan geen buffer
        Selection.Value = xlOff
    End If
    ActiveSheet.Shapes("obMixer11Kw").Select
    If Selection.Value = xlOn Then
        ActiveSheet.Shapes("AlsMixerKeuze").Select
        Selection.Value = xlOn
        Selection.Enabled = False    'zorgt er voor dat je de knop niet af kunt zetten
        ActiveSheet.Shapes("chkbMixerBrineNozzle").Select
        Selection.Value = xlOn
        ActiveSheet.Shapes("AlsBufferKeuze").Select  'mixer? dan geen buffer
        Selection.Value = xlOff
    End If
    Range("D1").Select    'haalt focus van geselecteerde chkbox af.
End Sub


Het rode gedeelte heb ik er zelf tussen geplaatst. Door de Selection.Enabled = False krijg ik dan zo'n kruis over mijn checkbox heen.
Wat doe ik niet goed?


Koosl
 
Even een correctie mijnerzijds:

Je hoeft toch GEEN gebruik te maken van de andere besturingselementen.
Wat je wel moet doen is het volgende:

1. De checkboxes en optiebuttons die je wilt beschermen dmv je rechtermuisknop, Besturingselement opmaken, [tabblad] Besturingselement, Geblokkeerd aanvinken.

2. Het bestand opslaan via Extra - Beveiliging - Blad beveiligen.
Belangrijk is dat je de bovenste optie (Vergrendelde cellen selecteren) uitvinkt.
Hierdoor zijn geblokkeerde cellen en besturingselementen niet te selecteren.

In mijn versie heb ik geen chkbMixerBrineNozzle dus ik kan het ook niet echt controleren wat er mis is gegaan.

Met vriendelijke groet,


Roncancio
 
Roncancio,

de checkbox en optionbuttons beveiliging werkt nu prima.

Ik heb de laatste versie van mijn bestand toegevoegd.
Het werkt nu ook goed, maar misschien kun je aangeven wat ik dan niet goed had gedaan in de vorige vraag
Code:
ActiveSheet.Shapes("AlsMixerKeuze").Select
Selection.Value = xlOn
Selection.Enabled = False
Het ging over Sub VerplichtBijMixerkeuze()

Ik ben bijna klaar. Nu moet ik nog op een of andere manier achter een aangevinkte tekening een prijs zien te krijgen. De tabel staat op sheet Data.

Heb je misschien een idee?

sneltoets voor unprotect is Ctrl u

Koosl
 

Bijlagen

Ik ben bijna klaar. Nu moet ik nog op een of andere manier achter een aangevinkte tekening een prijs zien te krijgen. De tabel staat op sheet Data.

Heb je misschien een idee?

Verscheidene.
Doordat de optionbuttons gelinkt zijn naar cellen, kan je via een if functie controleren of een optionbutton actief is of niet en aan de hand daarvan dmv bijv. index de bijbehorende prijzen zoeken.

Met VBA kan je gaan zoeken naar checkboxes en optionbuttons en controleren of ze aangevinkt zijn of niet.

Met vriendelijke groet,


Roncancio
 
Roncancio, ik heb je eerste optie uitgewerkt. Het werkt goed!

Ik heb op een andere sheet een tabel gemaakt. Deze heb ik de naam "prijslijst" gegeven.

De 5 checkboxen om de machine's te kiezen zijn naar 5 aparte cellen gelinkt, en alle checkboxen en optionbuttons zijn ook gelinkt naar elk een andere cel. Middels Vlookup (Vert.Zoeken) kan ik voor elke aangevinkte tekening de prijs bepalen.

De formule voor 1 machine is:
=IF(AND(AD$4=TRUE;Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")

Als ik die verder uitwerk over de 5 machines ziet die er zo uit:

=IF(AND(AD$4=TRUE;Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AE$4=TRUE; Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AF$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AG$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(H4;prijslijst;2;FALSE);"")&IF(AND(AH$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(H4;prijslijst;2;FALSE);"")

Roncancio, hartelijk dank voor het meedenken.:thumb:

Koosl
 
Roncancio, ik heb je eerste optie uitgewerkt. Het werkt goed!

Ik heb op een andere sheet een tabel gemaakt. Deze heb ik de naam "prijslijst" gegeven.

De 5 checkboxen om de machine's te kiezen zijn naar 5 aparte cellen gelinkt, en alle checkboxen en optionbuttons zijn ook gelinkt naar elk een andere cel. Middels Vlookup (Vert.Zoeken) kan ik voor elke aangevinkte tekening de prijs bepalen.

De formule voor 1 machine is:
=IF(AND(AD$4=TRUE;Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")

Als ik die verder uitwerk over de 5 machines ziet die er zo uit:

=IF(AND(AD$4=TRUE;Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AE$4=TRUE; Z4=TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AF$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(E4;prijslijst;2;FALSE);"")&IF(AND(AG$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(H4;prijslijst;2;FALSE);"")&IF(AND(AH$4=TRUE;Z4 = TRUE);"€"&" "&VLOOKUP(H4;prijslijst;2;FALSE);"")

Roncancio, hartelijk dank voor het meedenken.:thumb:

Koosl

Ik heb zo het gevoel dat één en ander hier veel simpeler kan, als ik naar die formule kijk. Als je het recentste bestand nog eens bijvoegt, dan kijk ik er straks of vanavond naar. Heb deze thread niet echt gevolgd.

Wigi
 
Wigi,

de formules staan in kolom K. ( Ze zijn wel voor iedere rij anders.)

Unprotect is Ctrl u

succes


Koosl
 

Bijlagen

Laatst bewerkt:
Koos

Ik heb goed en slecht nieuws. Eerst het slechte nieuws, zijn we daar al van af:

Minpunt:
je zal toch alle formules moeten nakijken

Pluspunt:
de formules kunnen veel simpeler.

Eerst heb ik een vraag:
bv. cel K18, je doet telkens dezelfde VERT.ZOEKEN formule! Ongeacht AD4, AE4, AF4, ... WAAR of ONWAAR is. Meer bepaald: VERT.ZOEKEN(E18;prijslijst;2;ONWAAR). Dit is niet nodig.

Z$18=1 komt ook altijd opnieuw terug. Zet dat gewoon aan het begin eenmalig. De EN formules kun je dan ook overboord gooien. Ten laatste, ALS(EN(AD$4=WAAR;Z$18=1) kan simpeler als: ALS(EN(AD$4;Z$18=1) Excel controleert toch al direct of AD$4 WAAR is, je hoeft dat er niet meer bij te zetten. Ten allerlaatste, "€"&" " kan eigenlijk korter als "€ "
"€ " kan eigenlijk weg: kan je niet de Celeigenschappen van die cellen aanpassen in euro? (via rechtsklik op de cellen zal niet gaan, want dat heb je zelf afgezet :D)

DUS:

Als ik het juist interpreteer, doe gewoon:

=ALS(Z$18=1;VERT.ZOEKEN(E24;prijslijst;2;ONWAAR);"")

en in euro's zetten.

Simpeler, niet?

Wigi


PS: voor de aardigheid, check eens de bestandsgrootte VOOR dat je de wijzigingen aanbrengt, en dan ook ERNA. Verschil?
 
Laatst bewerkt:
Wigi,
inderdaad het &"€"&" " hoort er niet in thuis. Maar om een of andere rede komt er geen euro teken in te staan ook al heb ik de celeigenschap op financieel of aangepast gezet.

Code:
''Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
''    Cancel = True          ' rechtsklikken wordt hier afgezet
''End Sub
(natuurlijk wel eerst de code afzetten ) :D

in cel K9 stond deze formule:
=ALS(EN(AD$4=WAAR;Z9=WAAR);"€"&" "&VERT.ZOEKEN(E9;prijslijst;2;ONWAAR);"")&ALS(EN(AE$4=WAAR; Z9=WAAR);"€"&" "&VERT.ZOEKEN(F9;prijslijst;2;ONWAAR);"")&ALS(EN(AF$4=WAAR;Z9 = WAAR);"€"&" "&VERT.ZOEKEN(G9;prijslijst;2;ONWAAR);"")&ALS(EN(AG$4=WAAR;Z9 = WAAR);"€"&" "&VERT.ZOEKEN(H9;prijslijst;2;ONWAAR);"")&ALS(EN(AH$4=WAAR;Z9 = WAAR);"€"&" "&VERT.ZOEKEN(I9;prijslijst;2;ONWAAR);"")

Deze heb ik aangepast naar:
=ALS(EN(AD$4;Z9);VERT.ZOEKEN(E9;prijslijst;2;ONWAAR);"")
&ALS(EN(AE$4; Z9);VERT.ZOEKEN(F9;prijslijst;2;ONWAAR);"")
&ALS(EN(AF$4;Z9);VERT.ZOEKEN(G9;prijslijst;2;ONWAAR);"")
&ALS(EN(AG$4;Z9 );VERT.ZOEKEN(H9;prijslijst;2;ONWAAR);"")
&ALS(EN(AH$4;Z9);VERT.ZOEKEN(I9;prijslijst;2;ONWAAR);"")

al veel simpeler :cool:
Maar als ik je goed begrijp kan het dan nog korter, maar ik zie het niet. :(

Kun je er eentje voordoen?

Ik heb hier alle formules geplakt in een .docje (misschien iets overzichtelijker en gemakkelijker te bewerken.


Koosl
 

Bijlagen

Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan