Я новичок здесь с чем-то, что заставило меня в тупик на несколько недель.

У меня есть макрос, который копирует 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-й слайд (массив 2), поэтому он будет вставлен только в слайды 1 и 3.

1 ответ1

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)

Надеюсь это поможет

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .