[英]How to copy the Gradient Fill from the SHAPE 1 and paste it into SHAPE 2 using VBA in Powerpoint?
[英]Copy paste shape by using VBA in PowerPoint
我正在嘗試使用PowerPoint中的VBA復制粘貼形狀。
此代碼無法退出If...End If
語句。
我的代碼出了什么問題?
Sub pasteshape()
Dim oSl As Slide
Dim oSh As Shape
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.Fill.Type = msoFillSolid Then
oSh.Duplicate
End If
Next
Next
End Sub
當你迭代它時 ,你正在改變你正在迭代的集合; 這總是一個壞主意!
所以你有一個無限循環,因為每次復制一個形狀時,你都有效地為oSl.Shapes
集合添加一個實心填充形狀,然后是一個應該重復的實心填充形狀 - 對吧?
您需要一種方法來分離知道要復制哪些形狀和復制實心填充形狀的過程 。
制作新系列:
Dim solidShapes As Collection
Set solidShapes = New Collection
現在迭代幻燈片及其形狀,但不是立即復制,而是將它們添加到該集合中 :
For Each currentShape In currentSlide.Shapes
If currentShape.Fill.Type = msoFillSolid Then
solidShapes.Add currentShape
End If
Next
請注意,我使用的是沒有系統匈牙利語 (也就是無用的)前綴的可讀標識符(讀取該鏈接! 特別是如果您堅信匈牙利表示法)。
現在,您可以迭代solidShapes
集合,並.Duplicate
每個項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.