отредактировано после разъяснения О.П. о необходимости циклически проходить фигуры от самых высоких до самых низких
Вы можете использовать SortedList
объект, использовать Shape
Top
свойство как ключ SortedList
и сам объект Shape
как его соответствующее значение:
Sub Main()
Dim shp As Shape
Dim j As Long
With CreateObject("System.Collections.SortedList")
For Each shp In slide.Shapes
.Add shp.Top, shp
Next
For j = 0 To .Count - 1 'list shapes from the highest to the lowest
MsgBox .GetByIndex(j).Name & " - " & .getkey(j)
Next
End With
End Sub