Sorry, I left the part out that I want this in the edit mode.
No problem. That makes it a great deal simpler. Here you go. Not elegant,
perhaps, but quick and easy to understand:
Sub SwapPositions()
' Swaps the positions of two (and only two) selected shapes
Dim lLeft1 As Long
Dim lTop1 As Long
Dim lLeft2 As Long
Dim lTop2 As Long
' test for correct number of selected shapes
With ActiveWindow.Selection.ShapeRange
If .Count <> 2 Then
MsgBox "Please select two and ONLY two shapes"
Exit Sub
Else
' get position of first shape
lLeft1 = .Item(1).Left
lTop1 = .Item(1).Top
' get position of second shape
lLeft2 = .Item(2).Left
lTop2 = .Item(2).Top
' now swap them
.Item(1).Left = lLeft2
.Item(1).Top = lTop2
.Item(2).Left = lLeft1
.Item(2).Top = lTop1
End If
End With
End Sub