Change order of Shapes with a click

  • Thread starter Thread starter John Michl
  • Start date Start date
J

John Michl

I have eight shapes on a sheet. I'd like to be able to click on a
shape and if its zorder is 1, bring it to the front. If not, send it
to the back. The following code does this but I must name each shape
and have a chunck of code for each shape.

How can I genericize this so that whatever shape is clicked, it will
change order?

Sub ToggleOrder()

If ActiveSheet.Shapes("NameOfShape").ZOrderPosition <= 1 Then
ActiveSheet.Shapes("NameOfShape").ZOrder msoBringToFront
Else
ActiveSheet.Shapes("NameOfShape").ZOrder msoSendToBack
End If

End Sub

- John
 
Sub ToggleOrder()
sName = Application.Caller
If ActiveSheet.Shapes(sName).ZOrderPosition <= 1 Then
ActiveSheet.Shapes(sName).ZOrder msoBringToFront
Else
ActiveSheet.Shapes(sName).ZOrder msoSendToBack
End If

End Sub
 
Hello John,

The Sheets are a collection object. You can step through all the items
in any collection object by using the For Each ... Next loop.

Sub ToggleOrder()

Dim Sht
For Each Sht In ActiveSheet.Shapes
If Sht.ZOrderPosition < = 1 Then
Sht.ZOrder msoBringToFront
Else
Sht.ZOrder msoSendToBack
End If
Next Sht

End Sub

Sincerely,
Leith Ross
 
Thanks, Tom. Exactly what I was looking for. I'm not familiary with
Application.Caller so I'll look that one up in the online reference.

- John
 
Back
Top