我是新来的,有些事已经困扰我好几个星期了。
我有一个宏,可以将 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)
希望这可以帮助