"ObjectsGroup" 错误 "Integer out of range"

"ObjectsGroup" error "Integer out of range"

我找到了制作

的代码

我将最后一行更改为 CommandBars.ExecuteMso ("ObjectsGroup") 而不是 CommandBars.ExecuteMso ("ShapesCombine")

宏的第一个 运行 正常,但是当我再次 运行 时(第一个哈维球在幻灯片上)我有错误

Shapes (unknow member): Integer out of range. [#]is not in the valid range of [#] to [#]

上线Set oshpR = sld.Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition))

如果形状合二为一 - 没有错误。它仅与组集一起出现。我需要这个形状作为在一张幻灯片上设置的组。幻灯片上可以有多组。

我认为这可能是个问题,因为幻灯片上可能有很多其他组(不是 Harvey 球)。

Sub Test2()
    Dim sld As Slide
    Dim shp1 As Shape
    Dim shp2 As Shape
    Dim oshpR As ShapeRange

    Set sld = Application.ActiveWindow.View.Slide
    Set shp1 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeOval, 300, 100, 50, 50)
    Set shp2 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapePie, 300, 100, 50, 50)
    Set oshpR = sld.Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition))
    CommandBars.ExecuteMso ("ObjectsGroup") 
End Sub

通过 CommandBars.ExecuteMso 分组需要对要分组的形状进行 select 编辑。创建一个 shaperange 不会隐含 select 范围内的形状。

试试这个:

Sub Test2()
Dim sld As Slide
Dim shp1 As Shape
Dim shp2 As Shape
Dim oshpR As ShapeRange

Set sld = Application.ActiveWindow.View.Slide
Set shp1 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeOval, 300, 100, 50, 50)
Set shp2 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapePie, 300, 100, 50, 50)
'Set oshpR = sld.Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition))
' msoTrue forces a new selection
shp1.Select msoTrue
' msoFalse adds the shape to the current selection
shp2.Select msoFalse
CommandBars.ExecuteMso ("ObjectsGroup")
End Sub

您也可以 select 您定义的形状范围:

Set oshpR = sld.Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition))
oshpR.Select msoTrue
CommandBars.ExecuteMso ("ObjectsGroup")