Извините, у меня под рукой нет PowerPoint, но я написал образец кода в Excel, надеюсь, это поможет немного сократить код и сделать его более удобным в обслуживании.
Идея состоит в том, чтобы извлечь код, который устанавливает положение фигуры для отдельной подпрограммы, а в основной подпрограмме перебирает AnswerOrder и вызывает эту подпрограмму для указанных фигур.
Public Sub set_shapePosition(determinant As Long, shp As Shape)
' can also put shp.Left = 303 here
Select Case determinant
Case 1
shp.Left = 303
shp.Top = 218
Case 2
shp.Left = 303
shp.Top = 290
Case 3
shp.Left = 303
shp.Top = 361
Case 4
shp.Left = 303
shp.Top = 432
End Select
' Also shape Top is around 71 pixels different to one and another,
' We can write below code for simpler implementation
' Getting rid of select case statement:
' shp.Top = 218 + 71 * (determinant - 1)
End Sub
Public Sub main()
' Define slide here.....
Set slide = ActivePresentation.Slides(3)
' ...Define and shuffle AnswerOrder here.......
'
' .............................................
For i = LBound(AnswerOrder) To UBound(AnswerOrder)
Call set_shapePosition(AnswerOrder(i), slide.Shapes("a" & i+1) )
Next i
End Sub