vba powerpoint:使用相同的 'with' 改变多个形状

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

None 我试过的选项都有效。有什么办法可以将 '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() 允许您一次处理多个形状。

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