Я делаю презентации с фоновыми вайпами, которые представляют собой технологические фигуры, с текстом «wipey» для желтых салфеток и «wipeb» для синих салфеток.При разработке анимации для учебных слайдов я размещаю вайпы впереди с прозрачностью 0,75.Как только порядок анимации вытирается и все салфетки размещены правильно, я перемещаю вайпы за текстом с нулевой прозрачностью.Мой макрос Wipe_Back работает нормально, но мой макрос Wipe_Front получает только некоторые из вайпов при каждом вызове.Я должен назвать это несколько раз, чтобы переместить все фигуры вперед.Макросы почти идентичны, поэтому я не уверен, что делаю неправильно, но я новичок в VBA!оба макроса показаны ниже, и я также открыт для рекомендаций по более элегантным практикам в коде.
Wipe_Back (похоже, работает):
Sub Wipe_Back()
Dim sld As slide
Dim shp As Shape
Dim str As String
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoAutoShape Then
If shp.HasTextFrame Then
If shp.TextFrame.TextRange = "wipey" Then
shp.Fill.Transparency = 0
shp.ZOrder msoSendToBack
'shp.Fill.Transparency = 0.75
'shp.ZOrder msoBringToFront
End If
If shp.TextFrame.TextRange = "wipeb" Then
shp.Fill.Transparency = 0
shp.ZOrder msoSendToBack
'shp.Fill.Transparency = 0.75
'shp.ZOrder msoBringToFront
End If
End If
End If
Next shp
Next sld
End Sub
Wipe_Front не работает последовательно:
Sub Wipe_Front()
Dim sld As slide
Dim shp As Shape
Dim str As String
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoAutoShape Then
If shp.HasTextFrame Then
If shp.TextFrame.TextRange = "wipey" Then
'shp.Fill.Transparency = 0
'shp.ZOrder msoSendToBack
shp.Fill.Transparency = 0.75
shp.ZOrder msoBringToFront
End If
If shp.TextFrame.TextRange = "wipeb" Then
'shp.Fill.Transparency = 0
'shp.ZOrder msoSendToBack
shp.Fill.Transparency = 0.75
shp.ZOrder msoBringToFront
End If
End If
End If
Next shp
Next sld
End Sub