Для части сценария VBA, которую я собираю, я хочу перебрать все фигуры на текущем слайде и вставить еще одну фигуру поверх каждой.
У меня есть первая подпрограмма, GetShapes (), которая получает все фигуры на текущем слайде и затем передает их по значению во вторую подпрограмму, LabelShapes (), которая добавляет новые фигуры сверху.
Однако новые фигуры появляются в объекте Shapes, который был передан.Кажется, что это не должно быть так, как это было передано по ссылке.
ПРЕДУПРЕЖДЕНИЕ, ниже будет быстро заблокировать PowerPoint
Sub GetShapes()
Dim ss As Shapes
Set ss = Application.ActiveWindow.View.Slide.Shapes
Call LabelShapes(ss)
End Sub
Sub LabelShapes(ByVal ss As Shapes)
Dim s As Shape
For Each s In ss
Debug.Print s.Name
Application.ActiveWindow.View.Slide.Shapes.AddShape _
Type:=msoShapeRectangle, Left:=50, Top:=50, Width:=15, Height:=15
Next
End Sub
Я думаю, я могу обойти это с помощью специальногоСоглашение об именовании моих новых фигур, а затем отфильтровываю их.Может быть, есть лучший способ?Но на самом деле я просто хотел бы понять, почему это не так, как я ожидаю.