#vba
#vba
Вопрос:
Есть ли какой-либо способ выбрать форму с несколькими фигурами из слайда с тем же именем фигуры.
Например, у меня есть 5 фигур с именем «Текстовое поле 60». И я хочу запустить макрос, который выбирает все фигуры из слайда с именем «Текстовое поле 60». Использовали приведенный ниже код.
ActiveWindow.View.Slide.Shapes.Range("Textbox 60").Select
Ответ №1:
Вот один из подходов:
Sub Tester()
SelectByName ActivePresentation.Slides(1), "Textbox1"
End Sub
Sub SelectByName(sld As Slide, nm As String)
Dim s As Shape, first As Boolean
first = True
For Each s In sld.Shapes
If s.Name = nm Then
s.Select first 'Argument determines whether to add to
first = False ' existing selection, or replace it
End If
Next s
End Sub
Однако вам следует попробовать последовать предложению @TinMan — это «лучший» способ.
Ответ №2:
По возможности следует избегать активации и выбора объектов. Вам лучше работать с фигурами, используя ShapeRange.
Sub Main()
Dim ShapeRange As ShapeRange
Set ShapeRange = FindShapes(ActiveWindow.View.Slide, "Textbox 60")
If Not ShapeRange Is Nothing Then
End If
End Sub
Function FindShapes(Slide As Slide, Pattern As String) As ShapeRange
Dim Results() As Long
ReDim Results(1 To Slide.Shapes.Count)
Dim n As Long
Dim Index As Long
For Index = 1 To Slide.Shapes.Count
With Slide.Shapes(Index)
.Name = "Textbox 60"
If .Name Like Pattern Then
n = n 1
Results(n) = Index
End If
End With
Next
If n > 0 Then
ReDim Preserve Results(1 To n)
Set FindShapes = Slide.Shapes.Range(Results)
End If
End Function
Примечание: я переписал код для обработки нескольких фигур с одинаковым именем.