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


0

我是新来的,有些事让我累了好几个星期。

我有一个宏,可以将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上。


是。有条件地检查您是否在幻灯片2上并运行Continue for或检查您是否在幻灯片一或三上并执行您的逻辑。使用条件检查If
Seth

if在这种情况下我如何使用?我可以做一些类似的事情: If Array(2) Continue for Array(3) End If 不熟悉使用数组,因为这是我第一次。与我之前为每个范围设计复制粘贴代码的方法相比,这是一个众神。
Simo Keng

Answers:


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)

希望这可以帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.