Change order of Shapes with a click

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
 
T

Tom Ogilvy

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
 
L

Leith Ross

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
 
J

John Michl

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top