![](/img/trans.png)
[英]Group shapes in same height across multiple rows in Powerpoint using VBA
[英]vba powerpoint: change multiple shapes using the same 'with'
我有一個宏,在其中創建兩個框,一個在幻燈片的頂部,一個在底部:oBoxTop和oBoxBottom。
目前我有這樣的事情:
Set oBoxTop = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
With oBoxTop
.TextFrame.TextRange.Text = "TEXT"
.TextFrame.TextRange.Font.Color.RGB = RGB(255, 255, 255)
.TextEffect.FontSize = 15
End With
Set oBoxBottom = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
With oBoxBottom
.TextFrame.TextRange.Text = "TEXT"
.TextFrame.TextRange.Font.Color.RGB = RGB(255, 255, 255)
.TextEffect.FontSize = 15
End With
由於兩個框都必須采用相同的格式設置,所以我希望只用一個代碼塊就可以做到這一點,而不是重復所有操作,即使只是稍微壓縮一下代碼也是如此。
由於幻燈片上還有其他形狀不需要更改(僅兩個剛創建的形狀需要更改),因此我嘗試了類似
With oBoxTop & oBoxBottom
要么
With oBoxTop and oBoxBottom
我嘗試過的所有選項均無效。 有什么方法可以將“ with function”用於多種形狀? 還是我必須完全不同地做?
為了進一步說明將形狀引用傳遞給另一個過程的意見。
我還沒有測試過,但是看起來應該像這樣:
Public Sub FormatShape(ShapeReference As Shape)
With ShapeReference
.TextFrame.TextRange.Text = "TEXT"
.TextFrame.TextRange.Font.Color.RGB = RGB(255, 255, 255)
.TextEffect.FontSize = 15
End With
End Sub
然后,您可以調用此過程並將其傳遞給其他形狀:
Sub Main()
Set oBoxTop = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
FormatShape oBoxTop
Set oBoxBottom = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
FormatShape oBoxBottom
' - - OR - -
FormatShape oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
FormatShape oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
End Sub
編輯:我已經更新了過程名稱PositionShape
具有誤導性。 我真的應該先正確閱讀問題。 :)
將名稱的Array()
傳遞給Shapes.Range()
可使您一次處理多個Shapes.Range()
。
Set oBoxTop = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
Set oBoxBottom = oSld.Shapes.AddShape(msoShapeRectangle, 0, 0, 720, 13)
With oSld.Shapes.Range(Array(oBoxTop.Name, oBoxBottom.Name))
.TextFrame.TextRange.Text = "TEXT"
.TextFrame.TextRange.Font.Color.RGB = RGB(255, 255, 255)
.TextEffect.FontSize = 15
End With
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.