VBA to cycle through values to change colours of various shapes

davey4444

Board Regular
Joined
Nov 16, 2010
Messages
97
Hello there,

I have a range of shape names followed by various values which correspond to the colours which I'd like to assign. I'm having problems piecing together the VBA code in order to update the shapes in one go. My data source is on the sheet named "Data" with the shapes on one called "Shapes" with some example data as such -
[TABLE="class: grid, width: 500"]
<tbody>[TR]
[TD]Area[/TD]
[TD]Shape Name[/TD]
[TD]Actual[/TD]
[TD]Budget[/TD]
[TD]Diff[/TD]
[TD]RAG Status[/TD]
[/TR]
[TR]
[TD]East[/TD]
[TD]Freeform1[/TD]
[TD]10[/TD]
[TD]5[/TD]
[TD]5[/TD]
[TD]1[/TD]
[/TR]
[TR]
[TD]Central[/TD]
[TD]Freeform11[/TD]
[TD]10[/TD]
[TD]10[/TD]
[TD]0[/TD]
[TD]0[/TD]
[/TR]
[TR]
[TD]West[/TD]
[TD]Freeform111[/TD]
[TD]5[/TD]
[TD]10[/TD]
[TD]-5[/TD]
[TD]-1[/TD]
[/TR]
</tbody>[/TABLE]

Potentially I do not need the RAG Status column as I can determine the required colour if the Diff value is positive, zero or negative. I have the recorded macro code to change the colour of an individual shape but now I'm stuck in progressing that to work based on values in another sheet.
Any help is appreciated - thanks.
 

Excel Facts

Will the fill handle fill 1, 2, 3?
Yes! Type 1 in a cell. Hold down Ctrl while you drag the fill handle.
Something like
Code:
Sub davey4444()
   Dim shp As Shape
   Dim Dws As Worksheet, Sws As Worksheet
   Dim Cl As Range
   Dim Clr
   
   Set Dws = Sheets("data")
   Set Sws = Sheets("Shapes")
   For Each Cl In Dws.Range("B2", Dws.Range("B" & Rows.Count).End(xlUp))
      Select Case Cl.Offset(, 4).Value
         Case Is < 0: Clr = vbRed
         Case 0: Clr = vbYellow
         Case Is > 0: Clr = vbGreen
      End Select
      Sws.Shapes(Cl.Value).fill.ForeColor.RGB = Clr
   Next Cl
End Sub
 
Upvote 0
You're welcome & thanks for the feedback
 
Upvote 0

Forum statistics

Threads
1,223,630
Messages
6,173,454
Members
452,514
Latest member
cjkelly15

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top