door een getal in een cel te zetten moet oval verkleuren

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

bo69

Gebruiker
Lid geworden
15 jul 2012
Berichten
28
'deze werkt niet

Code:
Private Sub ActiveSheet_Shapes_Range((ByVal Target As Range)
ActiveSheet.Unprotect Password:="bo69"

If Target.Address = "$i$106" And Target = 26 Then
    ActiveSheet.Shapes.Range(Array("Oval 26")).Select
    With Selection.ShapeRange.Fill
    .ForeColor.RGB = RGB(236, 14, 46)
    End With
End If
 
Laatst bewerkt door een moderator:
daar hoort nog bij als het geen 26 is dan transparant als het getal 26 is dan bv blauw
 
Met een simpel voorbeeldje kan ik de kleur wel veranderen...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("D7").Value = 26 Then
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 15
    Else
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 13
    End If
End Sub
Zoals je ziet, hangt de gebeurtenis niet op de shape.
 
Hij blijft op zwart hangen en verandert niet ik heb het eerst met 1 cel gedaan en de kleur veranderde op de else zin terwijl ik 26 in de cel zet.
maar er gebeurd wel wat dus ik ben al verder als 26 in cel ao41 staat moet hij blauw worden en in cel ao42 moet hij rood worden en in cel a45 wit en anders moet het transparant zijn. Ik hoop dat u mij, hierbij verder kunt helpen.

Nu heb ik dit gemaakt en krijg ik een foutmelding bij end sub
Code:
 Private Sub Worksheet_Change(ByVal Target As Range)
    If Sheet1.Range("ao41").Value = 26 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 25
    If Sheet1.Range("ao42").Value = 26 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 15
    If Sheet1.Range("a45").Value = 26 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = xlThemeColorDark1
    Else
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 0
    End With
    End If
   
    
End Sub
 
Laatst bewerkt door een moderator:
ik heb nu dit geprobeerd maar werkt ook niet

Code:
 If Sheet1.Range("ap28").Value = 0 Then
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 0
    Else: .If Sheet1.Range("ap28").Value = 1
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 25
    Else: .If Sheet1.Range("ap28").Value = 2
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 15
    Else: .If Sheet1.Range("ap28").Value = 3
        Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = xlThemeColorDark0
    End If
    End With
    End If
 
Laatst bewerkt door een moderator:
Zou je de code willen opmaken met de CODE knop? Dan wordt die wat leesbaarder. Dan had je ook misschien gezien dat er nogal wat fout is in je voorbeeldje ;)
Misschien bedoel je dit?

Code:
If ActiveSheet.Range("E5").Value = 26 Then
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 25
ElseIf ActiveSheet.Range("E6").Value = 26 Then
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 15
ElseIf ActiveSheet.Range("E7").Value = 26 Then
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 5
Else
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 27
End If

Hierbij worden de cellen 'van boven naar beneden' geëvalueerd; de eerste voorwaarde die WAAR is wordt uitgevoerd. Dus in mijn voorbeeldje bepaalt de bovenste cel van de reeks E5:E7 die de waarde 26 bevat de kleur van de ovaal.
 
Code:
If Sheet1.Range("ap5").Value = 3 Then
        Me.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 5

    ElseIf Sheet1.Range("ap5").Value = 1 Then
        Me.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 25

    ElseIf Sheet1.Range("ap5").Value = 2 Then
        Me.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 15
    
    Else: Sheet1.Range("ap5").Value = 0
        Me.Shapes("Oval 3").Fill.ForeColor.SchemeColor = 60
    End If

Dit gaat allemaal goed, moet nu alleen de code weten om de oval onzichtbaar te maken
of een code om alle oval met de nummers 0 tot en met 36 onzichtbaar te maken.
 
Laatst bewerkt door een moderator:
Dat wordt dan zoiets:
Code:
If ActiveSheet.Range("E5").Value = 26 Then
    Me.Shapes("Oval 1").Visible = True
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 25
ElseIf ActiveSheet.Range("E6").Value = 26 Then
    Me.Shapes("Oval 1").Visible = True
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 15
ElseIf ActiveSheet.Range("E7").Value = 26 Then
    Me.Shapes("Oval 1").Visible = True
    Me.Shapes("Oval 1").Fill.ForeColor.SchemeColor = 5
Else
    Me.Shapes("Oval 1").Visible = False
End If

En ik zie dat je nog op zoek bent naar de CODE knop :)
(Hint: Die heeft # als caption)
 
@bo69 diversen berichten aangepast. code dient tussen de code tags geplaatst te worden. Helpers hebben je hier ook al op gewezen. Negeer dit dan niet.
 
bedankt alles werkt nu.
Ik weet alleen niet wat met code bedoeld word en ook de tag zegt mij niets.
 
nog niet goed de formule gaat uit de ap kolom

Het werkt toch nog niet deze code haald de formule uit de ap kolom en nu zijn de nummers waar een waarde is van 1/2/3 transparant en de andere shapes met de waarde 0 zijn gekleurd. ik heb de code wat gewijzigd bij oval 26, maar maakt niets uit.


Code:
 If Sheet1.Range("ap29").Value = 3 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 5
    ElseIf Sheet1.Range("ap29").Value = 1 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 25
    ElseIf Sheet1.Range("ap29").Value = 2 Then
        Me.Shapes("Oval 26").Fill.ForeColor.SchemeColor = 15
    Else: Sheet1.Range("ap29").Value = 0
        Me.Shapes("Oval 26").Visible = False
        End If
        
    If Sheet1.Range("ap30").Value = 0 Then
        Me.Shapes("Oval 27").Visible = True
    ElseIf Sheet1.Range("ap30").Value = 1 Then
        Me.Shapes("Oval 27").Fill.ForeColor.SchemeColor = 25
    ElseIf Sheet1.Range("ap30").Value = 2 Then
        Me.Shapes("Oval 27").Fill.ForeColor.SchemeColor = 15
    Else: Sheet1.Range("ap30").Value = 3
         Me.Shapes("Oval 27").Fill.ForeColor.SchemeColor = 5
        End If
        
    If Sheet1.Range("ap31").Value = 0 Then
        Me.Shapes("Oval 28").Visible = True
    ElseIf Sheet1.Range("ap31").Value = 1 Then
        Me.Shapes("Oval 28").Fill.ForeColor.SchemeColor = 25
    ElseIf Sheet1.Range("ap31").Value = 2 Then
        Me.Shapes("Oval 28").Fill.ForeColor.SchemeColor = 15
    Else: Sheet1.Range("ap31").Value = 3
         Me.Shapes("Oval 28").Fill.ForeColor.SchemeColor = 5
        End If
 
Laatst bewerkt door een moderator:
De uitleg over de CODE tag lijkt mij vrij duidelijk; probeer 'm eens zou ik zeggen! Zelf typ ik de code er altijd bij, dus je begint dan met [ code ] (zonder de spaties) typt of plakt dan de code, en aan het eind typ je dan [ /code ] . Of als je een reactie typt in het <Ga geavanceerd> venster, dan heb je rechts in de werkbalk de knop ( # )
 
Private Sub Worksheet_Change(ByVal Target As Range)

deze zin staat er boven, wat jij nu allemaal schrijft daar snap ik niets van.
 
En ik maar denken dat het simpel is om code op te maken met een CODE knop.... Lees de link van Huib er nog eens op na dan; we kunnen niet van Huib verlangen dat hij voor iedereen de code achteraf opmaakt :)
 
Ik heb geen flauw idee wat je met die code aan het doen bent; je maakt een vergelijking met 4 cellen die allemaal een andere waarde testen om de ovaal te kleuren, wat ik al vreemd vind. Bovendien wordt er maar één variant uitgevoerd, in een oplopende volgorde. Anders gezegd: er hoeft maar aan één voorwaarde te worden voldaan om de ovaal te kleuren. En dat met verschillende waarden. Geen idee wat de bedoeling is van dit verhaal. En aangezien ik dat niet heb, kan ik ook niet zeggen of de code werkt of niet. Ik kan hooguit constateren dat de verschillende IF..End If constructies werken of niet, en dat doen ze dus wel.
 
Het werkt nu wel heel erg bedankt, kan je mij vertellen hoe ik hier aangeef dat het opgelost is

Code:
  If Sheet1.Range("ap3").Value = 0 Then
        Me.Shapes("Oval 108").Visible = False
    ElseIf Sheet1.Range("ap3").Value = 1 Then
        Me.Shapes("Oval 108").Visible = True
        Me.Shapes("Oval 108").Fill.ForeColor.SchemeColor = 39
    ElseIf Sheet1.Range("ap3").Value = 2 Then
        Me.Shapes("Oval 108").Visible = True
        Me.Shapes("Oval 108").Fill.ForeColor.SchemeColor = 2
    Else: Me.Shapes("Oval 108").Visible = True
         Me.Shapes("Oval 108").Fill.ForeColor.SchemeColor = 1
        End If
 
Laatst bewerkt door een moderator:
@bo69 Waarom volg je niet op OctaFish en ik jou proberen duidelijk te maken. Waarom blijf je doorgaan om de code te plaatsen zonder codetags. Wat codetags zijn is je al twee keer uitgelegd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan