Twee keer private sub laten werken

Status
Niet open voor verdere reacties.

jeroen562

Gebruiker
Lid geworden
8 apr 2010
Berichten
12
Wie kan mij helpen om deze code te laten werken. Hij doet het niet doordat de naam (worksheet_change) hetzelfde is, maar als ik de naam verander bij één dan krijg ik een foutmelding.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    If Range("c31").Value < 0.8 Then Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 10: Exit Sub
    If Range("c31").Value > 0.9 Then Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 11: Exit Sub
    Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 52
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    If Range("c34").Value < 0.4 Then Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 10: Exit Sub
    If Range("c34").Value > 0.5 Then Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 11: Exit Sub
    Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 52
End Sub

Alvast bedankt!
 
Waarom niet gecombineerd tot:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cell As Range
    If Range("c31").Value < 0.8 Then Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 10: Exit Sub
    If Range("c31").Value > 0.9 Then Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 11: Exit Sub
    Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = 52
    If Range("c34").Value < 0.4 Then Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 10: Exit Sub
    If Range("c34").Value > 0.5 Then Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 11: Exit Sub
    Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = 52
End Sub
 
Die code werkt niet probeer maar uit.
Je krijgt de fout:

Dubbele declaratie in huidige bereik.

Groeten.
 
Dit lijkt me voldoende:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Startpunt").Shapes(11).Fill.ForeColor.SchemeColor = iif([C31]<0.8,10,iif([C31]>0.9,11,52))
   Sheets("Startpunt").Shapes(21).Fill.ForeColor.SchemeColor = iif([C34]<0.4,10,iif([C31]>0.5,11,52))
End Sub
En als de shapes in het zelfde werkblad staan als van de gebeurtenis worksheet_change:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Shapes(11).Fill.ForeColor.SchemeColor = iif([C31]<0.8,10,iif([C31]>0.9,11,52))
   Shapes(21).Fill.ForeColor.SchemeColor = iif([C34]<0.4,10,iif([C31]>0.5,11,52))
End Sub
Maar het lijkt me niet handig deze code bij iedere verandering van het werkblad te laten uitvoeren:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   if not Intersect(target,[C31,C34]) is nothing then Shapes(iif(target.row=31,11,21)).Fill.ForeColor.SchemeColor = iif(target<0.4 + iif(target.row=31,0.4,0),10,iif(target>0.5+iif(target.ros=31,0.4,0),11,52))
End Sub
 
Bedankt Snb.

In mijn geval werkt de eerste perfect. Bij het openen van het werkblad worden die twee cellen herberekend en verder zal er geen wijziging plaats vinden in het blad.

Groeten
 
Dan is de gebeurtenis Activate voor de hand liggender:

Code:
Private Sub Worksheet[COLOR="Red"]_Activate()[/COLOR]
   Shapes(11).Fill.ForeColor.SchemeColor = iif([C31]<0.8,10,iif([C31]>0.9,11,52))
   Shapes(21).Fill.ForeColor.SchemeColor = iif([C34]<0.4,10,iif([C31]>0.5,11,52))
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan