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

Vorm zichbaar maken nadat keuze is gemaakt in cel

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

HBot

Gebruiker
Lid geworden
12 dec 2006
Berichten
325
Hallo Forum
ik ben al een tijdje bezig om de om de juiste manier te bedenken, kan niet iets goed vinden in het forum of op het net.
Hier mijn vraag,
Als ik een bepaalde cel een waarde geeft bv: [B10] = JA dan zou er een vorm (pijl) zichtbaar moeten worden.
Deze pijl bevat al een marco
De pijl heb ik al aangemaakt maar ik wil deze alleen zichtbaar hebben als aan gestelde voorwaarden wordt voldaan.

Alvast bedankt voor de hulp
Botje
 
Die vorm (Shape) heeft een naam en een nummer waarmee je attributen ervan kan instellen. 1 van die attributen is Visible:
Shape01.Visible = True of Shape01.Visible = False.
 
Edmoor,
Bedankt, maar waar kan ik zien welk nummer deze heeft?
Ik wil de vorm (pijl) die ik al hebt aangemaakt en waar een macro aanhangt onzichtbaar maken en alleen als de juiste waarde in de cel staat zichtbaar maken.
Hoe zou de macro er dan uit moeten zien?
Gr
Botje
 
Plaats een voorbeeld documentje, dan krijg je een voorbeeld code die daarop is gebaseerd.
 
Zet dit achter het werkblad:
Code:
Private Sub Worksheet_Activate()
    Call Worksheet_Change(Range("A2"))
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oActive As Worksheet
    
    If Target.Address = "$A$2" Then
        Set oActive = ActiveSheet
        oActive.Shapes("PIJL-RECHTS 1").Visible = IIf(Target = "JA", True, False)
    End If
End Sub
 
Laatst bewerkt:
Edmoor,

Sorry ik ben nog niet zo bedreven in VBA, maar leer elke keer weer,
Wat bedoel je met zet achter het werkblad? waar is dit?
Niet een macro aanmaken?
Gr
Botje
 
edmoor,

bedankt het is al iets duidelijker,

Ik ga het weekend een beetje stoeien,
Werk nog niet in het hoofdbestand(is te groot om te versturen) omdat daar meerdere pijlen staan,
De macros die daaraan gekoppeld zijn werken niet meer.
Kan ik deze pijlen apart benoemen zodat ik dit meerdere keren kan gebruiken voor verschillende pijlen.
Gr
Botje
 
Als je met rechts op zo'n pijl klikt zie je de naam van die pijl in het naamvak van Excel. De code die ik je gaf zou duidelijk genoeg moeten zijn om alle pijlen te behandelen. Je kan Shapes ook groeperen om een groep ineens te behandelen.
 
Laatst bewerkt:
edmoor,

Duidelijk leer elke keer weer bij dit is een mooie toepassing, maar.. het lukt me niet om de pijlen onzichtbaar te maken, hoe heb je dit gedaan?
Kan ook niet vinden in je voorbeeld hoe je dit gedaan hebt.

Botje
 
De functie voor het bepalen of een pijl zichtbaar moet zijn of niet is deze:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oActive As Worksheet
    If Target.Address = "$A$2" Then
        Set oActive = ActiveSheet
        oActive.Shapes("PIJL-RECHTS 1").Visible = IIf(Target = "JA", True, False)
    End If
End Sub

Het is een event functie die wordt uitgevoerd als je een een cel wijzigt.

Daarnaast wordt deze aangeroepen op het moment dat het betreffende werkblad actief wordt gemaakt:
Code:
Private Sub Worksheet_Activate()
    Call Worksheet_Change(Range("A2"))
End Sub

Beide zijn event functies voor het werkblad en dienen dus in de Worksheet sectie van het betreffende werkblad te staan.
 
Laatst bewerkt:
edmoor,

bedankt, dit is duidelijk,

Probleem zat e'm in de gegevens validatie hier had ik alleen "JA" staan nu ";" erbij gezet en werkt perfect,
Ga er mee verder.

Bedank voor het advies en tot later.

Gr
botje
 
Edmoor,

Jammer ik dacht het te snappen :-(.
Als de regels kopieer om deze toe te passen voor andere celllen en objecten krijg ik de melding "dubbelzinnige naam gevonden"Worksheet_change"
Als ik deze verander bv; "Worksheet1_change" of in de naam van de tab werkt het niet op deze nieuwe pijlen,

Waar gaat het fout, wat snap ik niet.
Gr
botje
 
Ik denk dat je daar het basisbegrip van VBA en Event macro's mist. Kennelijk heb je al een routine die Worksheet_Change heet en deze mag maar 1x bestaan achter hetzelfde werkblad. Als je er dus al 1 hebt dan moet je die uitbreiden met de code die ik gaf en er niet zomaar in plakken. Plaats anders je document eens.
 
Hallo Edmoor,

Beetje aan het puzzelen geweest en heb ben tot het volgende gekomen.

"Private Sub Worksheet_Activate()
Call Worksheet_Change(Range("B18"))
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim oActive As Worksheet

If Target.Address = "$B$19" Then
' als geselecteerde cel = B18
Set oActive = ActiveSheet

If Target = "JA" Then
'als waarde "ja"is
oActive.Shapes("PIJL-RECHTS 5").Visible = True
' Maak pijl 5 zichtbaar
Else
oActive.Shapes("PIJL-RECHTS 5").Visible = False
' En anders, verberg deze
End If
End If

If Target.Address = "$B$24" Then
Set oActive = ActiveSheet

If Target = "25kg" Then
oActive.Shapes("PIJL-RECHTS 3").Visible = True
oActive.Shapes("PIJL-RECHTS 4").Visible = False
ElseIf Target = "300kg" Or Target = "Volledige batch" Then
oActive.Shapes("PIJL-RECHTS 3").Visible = False
oActive.Shapes("PIJL-RECHTS 4").Visible = True
Else
oActive.Shapes("PIJL-RECHTS 3").Visible = False
oActive.Shapes("PIJL-RECHTS 4").Visible = False
End If
End If


If Target.Address = "$H$24" Then
Set oActive = ActiveSheet

If Target = "25kg" Then
oActive.Shapes("PIJL-RECHTS 5").Visible = True
oActive.Shapes("PIJL-RECHTS 9").Visible = False
ElseIf Target = "300kg" Or Target = "Volledige batch" Then
oActive.Shapes("PIJL-RECHTS 5").Visible = False
oActive.Shapes("PIJL-RECHTS 9").Visible = True
Else
oActive.Shapes("PIJL-RECHTS 5").Visible = False
oActive.Shapes("PIJL-RECHTS 9").Visible = False
End If
End If


End Sub "

Het werkt, soms heb je even een aanzetje nodig.
Mijn kennis van VBA is beperkt en iets wat ik niet dagelijks gebruikt,
Het document bevat veel vertrouwelijke informatie dus moet ik het doen met voorbeelden.
ik probeer het iets gemakkelijker en begrijpelijker te maken voor de gebruikers.
Deze stap is gelukt, .. op naar de volgende uitdaging..
Gr
Botje
 
Ok dan :thumb:

Heb ik alleen de leesbaarheid wat voor je aangepast:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim oActive As Worksheet
    
    If Target.Address = "$B$19" Then
        ' als geselecteerde cel = B19
        Set oActive = ActiveSheet
        If Target = "JA" Then
            'als waarde "ja"is
            oActive.Shapes("PIJL-RECHTS 5").Visible = True
            ' Maak pijl 5 zichtbaar
        Else
            oActive.Shapes("PIJL-RECHTS 5").Visible = False
            ' En anders, verberg deze
        End If
    End If
        
    If Target.Address = "$B$24" Then
        Set oActive = ActiveSheet
        If Target = "25kg" Then
            oActive.Shapes("PIJL-RECHTS 3").Visible = True
            oActive.Shapes("PIJL-RECHTS 4").Visible = False
        ElseIf Target = "300kg" Or Target = "Volledige batch" Then
            oActive.Shapes("PIJL-RECHTS 3").Visible = False
            oActive.Shapes("PIJL-RECHTS 4").Visible = True
        Else
            oActive.Shapes("PIJL-RECHTS 3").Visible = False
            oActive.Shapes("PIJL-RECHTS 4").Visible = False
            End If
        End If
        
        If Target.Address = "$H$24" Then
        Set oActive = ActiveSheet
        
        If Target = "25kg" Then
            oActive.Shapes("PIJL-RECHTS 5").Visible = True
            oActive.Shapes("PIJL-RECHTS 9").Visible = False
        ElseIf Target = "300kg" Or Target = "Volledige batch" Then
            oActive.Shapes("PIJL-RECHTS 5").Visible = False
            oActive.Shapes("PIJL-RECHTS 9").Visible = True
        Else
            oActive.Shapes("PIJL-RECHTS 5").Visible = False
            oActive.Shapes("PIJL-RECHTS 9").Visible = False
        End If
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan