checkbox zichtbaar en verborgen door verandering cel

  • Onderwerp starter Onderwerp starter JvH8
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

JvH8

Gebruiker
Lid geworden
27 sep 2016
Berichten
7
Ik heb een vraag waar ik niet uit kom

Op een werkblad heb ik meerdere checkboxen

Voor checkbox 1 is het doel: als cel B1 het getal 1 wordt moet checkbox1 automatisch onzichtbaar worden. Als cel B1 een andere tekst of waarde bevat dient de checkbox zichtbaar te zijn.
Voor checkbox 2 is het doel: als cel B2 het getal 1 wordt moet checkbox2 automatisch onzichtbaar worden. Als cel B2 een andere tekst of waarde bevat dient de checkbox zichtbaar te zijn.

Ik heb dit gedaan middels de volgende formule

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveSheet.Range("B1").Value = 1 Then
ActiveSheet.Shapes("CheckBox1").Visible = False
Else
ActiveSheet.Shapes("CheckBox1").Visible = True
End If
End Sub

Dit werkt goed echter als ik dezelfde code eronder gebruik, alleen dan voor cel B2 met checkbox2 dan krijg ik de melding "compileerfout, er is een dubbelzinnige naam gevonden: worksheet_selectionChange"
Ik kan de naam 'Private Sub Worksheet_SelectionChange(ByVal Target As Range)' blijkbaar dus niet 2 keer gebruiken in 1 werkblad.

Het lukt mij echter niet om 1 code te schrijven voor beide (meerdere) checkboxen..

Weet iemand een oplossing?
Zie ook de excelbijlage
Bekijk bijlage CB zichtbaar.xlsm:rolleyes:
Alvast erg bedankt!
Johan
 
Alleen bij wijziging van B1 en B2.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("b1:b2")) Is Nothing Then
    Me.Shapes("CheckBox1").Visible = Range("B1").Value = 1
    Me.Shapes("CheckBox2").Visible = Range("B2").Value = 1
End If
End Sub
 
De naam van een Sub moet uniek zijn. Je moet het dus voor alles CheckBoxes in de Sub Worksheet_Change regelen.

Edit:
Zie HSV :P
 
Laatst bewerkt:
Zo dat is snel! Top.:)
Zojuist de code gecheckt. Helaas werkt het niet.--:(
Nog een idee hoe op te lossen?
 
Natuurlijk werkt dat als jij het maar goed doet.
 
Ok,
Heb de fout inmiddels gevonden. In cel B1 staat de formule =a1 en in cel B2 staat de formule =a2.
Bedoeling is dat deze formule er in blijft staan. Blijkbaar werkt de code alleen als je de cel B1 of B2 zelf wijzigt.
Is dit nog op te lossen?
 
Probeer het zo maar eens.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1:a2")) Is Nothing Then
    Me.Shapes("CheckBox1").Visible = Range("B1").Value = 1
    Me.Shapes("CheckBox2").Visible = Range("B2").Value = 1
End If
End Sub
 
Top! Bedankt! Dat werkt inderdaad,:thumb:
Zit nu alleen nog met het volgende..
De cellen a1:a2 moeten wil ik verplaatsen naar een ander werkblad. In deze situatie zo de formule in cel B1 dus zijn: =Blad2!D1
In de code zou dus Range("a1;a2)) veranderd moeten worden. Ik krijg dat maar niet voor elkaar.
Is hier een oplossing voor?
 
Dan zet je de code in de module van blad2 als je daar de boel wijzigd.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("a1:a2")) Is Nothing Then
    sheets("blad1").Shapes("CheckBox1").Visible = Range("d1").Value = 1
    sheets("blad1").Shapes("CheckBox2").Visible = Range("d2").Value = 1
End If
End Sub

Anders graag een voorbeeldbestand met hoe het eruit ziet.
 
Bekijk bijlage CB zichtbaar1.xlsmBedankt weer voor je snelle antwoord! Weer een stukje verder..
Als ik alles in blad2 zet werkt inderdaad goed. Echter is het doel is om in blad21 een getal in te voeren. Dit verwijst dan naar een cel in blad2. Dit getal wordt dan weer terugverwezen naar blad1.. In blad1 moet de checbox dan zichtbaar worden of juist niet.
Bijgaand heb ik de excel gevoegd. De waarden in cel B1 en B2 verwijzen nu nog naar cel A1 en A2. Echter zou dit moeten verwijzen naar blad2!A1 en blad2!A2. Helaas werkt dit niet..
Zou je nog eens willen kijken?
 
Omschrijf nu eens duidelijk wat de bedoeling is.
Ten eerste staat de code niet in moduleblad "blad2" (wat volgens jou een stukje verder is).
Ten tweede is het nog de eerste code die in moduleblad "blad1" staat.
En als laatst zijn het weer andere cellen die je wijzigt.

In moduleblad "blad2".
Je wijzigt immers de cellen met de hand in D1 en D2 van tab 2.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("d1:d2")) Is Nothing Then
    Sheets("blad1").Shapes("CheckBox1").Visible = Range("d1").Value = 1
    Sheets("blad1").Shapes("CheckBox2").Visible = Range("d2").Value = 1
End If
End Sub
 
Ik had inderdaad wat gewijzigd.. Alleen had ik je nieuw formule niet goed gekopieerd, sorry! :confused:
Nu werkt het inderdaad wel!!
Bijgaand een geupdate excel (wel weer veranderd.. sorry hiervoor..maar heb wel met een reden). Als de cellen F7 en H7 in blad2 worden gewijzigd in het getal 3 (c3 en c8 worden dan getal 1) worden de chechboxen onzichtbaar!
Code die ik gebruik is:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("f7, h7")) Is Nothing Then
Sheets("blad1").Shapes("CheckBox1").Visible = Range("c7").Value <> 1
Sheets("blad1").Shapes("CheckBox2").Visible = Range("c8").Value <> 1
End If
End Sub


Mijn laatste stap is het gebruik van een keuzelijst! Vandaar dat ik de ecxel weer heb veranderd. Ik dacht eigenlijk dat dit hetzelfde effect zou hebben als het invoeren van een getal, hetgeen dus niet zo is.

Doel is dat ik op blad1 van excel via een keuzelijst met invoervak de checkbox zichtbaar of onzichtbaar kan maken. Per keuzelijst dient een checkbox zichtbaar/onzichtbaar te kunnen worden gemaakt.
In bijgaande excel is het dus het doel:
- keuzelijst nr.1: Indien wordt gekozen voor keuze3 dient checbox1 onzichtbaar te worden, anders zichtbaar
- keuzelijst nr.2: Indien wordt gekozen voor keuze3 dient checbox1 onzichtbaar te worden, anders zichtbaar

Het gekke is dat als ik de cellen f7 en h7 op blad2 van excel handmatig invoer de macro wel werkt terwijl dit niet werkt bij gebruik van de keuzelijst...

Daar nog een oplossing voor... Hoop dat het een beetje duidelijk is.


Bekijk bijlage CB zichtbaar1 update.xlsm
 
Dank!! Code is inderdaad ook lekker kort.

Als ik keuze 2 kies wordt de checkbox echter zichtbaar (moet zijn: onzichtbaar).
Nu zijn er 3 keuzes. Uiteindelijk worden het 13 keuzes. Per keuze wil ik van te voren bepalen of de checkbox zichtbaar wordt.
Is dit ook in te stellen door wijziging van jouw laatste code?
Verder heb jij volgens mij het keuzevak ingevoerd alszijnde een 'ActiveXbesturingselement'. Ik zelf had een 'formulierbesturingselement' ingevoegd. Voor mij niet echt een probleem om er een ActiveXbesturingselement van te maken. Maar is het ook mogelijk om de code te gebruiken voor een 'formulierbesturingselement'? (mij niet gelukt..).

Alvast dank weer!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan