如何在从 Excel 到 PowerPoint 的复制宏中跳过数组中的项目

如何在从 Excel 到 PowerPoint 的复制宏中跳过数组中的项目

我是新来的,有些事已经困扰我好几个星期了。

我有一个宏,可以将 Excel 范围从工作表复制到预先准备的 PowerPoint 幻灯片,这是使用如下数组完成的:

SlideArr = Array(1, 2, 3)

RangeArr = Array(Output.Range("A1:B1"), Output.Range("A2:B2"), _
  Output.Range("A3:B3"))

For x = LBound(SlideArr) To UBound(SlideArr)
    RangeArr(x).Copy
    Set shp = MyPresentation.Slides(SlideArr(x)).Shapes.PasteSpecial(DataType:=2)

现在,它的作用是将 3 组范围复制粘贴到 3 张不同的幻灯片中。我的问题是,是否可以编写一个宏来跳过第二张幻灯片(数组 2),这样它只会粘贴到幻灯片 1 和 3 上。

答案1

如果你只有 3 件物品,你可以有几个选择

就像评论中提到的那样(不是最有效的选择):


SlideArr = Array(1, 2, 3)

RangeArr = Array(Output.Range("A1:B1"), Output.Range("A2:B2"), Output.Range("A3:B3"))

For x = LBound(SlideArr) To UBound(SlideArr)
    If x = 1 Or x = 3 Then    'If x is 1 or 3 execute the statements
        RangeArr(x).Copy
        Set shp = MyPresentation.Slides(SlideArr(x)).Shapes.PasteSpecial(DataType:=2)
    End If
Next

下一个对于更多项目更有用,但它也可以在这里工作


SlideArr = Array(1, 2, 3)

RangeArr = Array(Output.Range("A1:B1"), Output.Range("A2:B2"), Output.Range("A3:B3"))

'On a 5 itm array, x will become: 1, 3, 5 (yours will iterate with x = 1 and x = 3)

For x = LBound(SlideArr) To UBound(SlideArr) Step 2
    RangeArr(x).Copy
    Set shp = MyPresentation.Slides(SlideArr(x)).Shapes.PasteSpecial(DataType:=2)
Next

或者,根本不使用循环:


RangeArr(1).Copy
Set shp = MyPresentation.Slides(SlideArr(1)).Shapes.PasteSpecial(DataType:=2)

RangeArr(3).Copy
Set shp = MyPresentation.Slides(SlideArr(3)).Shapes.PasteSpecial(DataType:=2)

希望这可以帮助

相关内容