Como pular um item em uma matriz em uma macro de cópia do Excel para o PowerPoint

0

Eu sou novo aqui com algo que me deixou perplexo por semanas.

Eu tenho uma macro que copia os intervalos do Excel de uma planilha para um slide do PowerPoint pré-preparado, e isso é feito usando uma matriz como a seguinte:

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)

Agora, o que isso faz é copiar e colar três conjuntos de intervalos em três slides diferentes. Minha pergunta é se é possível codificar uma macro que pula o segundo slide (array 2), então ele só colará nos slides 1 e 3.

    
por Simo Keng 19.07.2017 / 12:12

1 resposta

1

Se você tem apenas 3 itens, você tem algumas opções

Como mencionado no comentário (não a opção mais eficiente):

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

O próximo é mais útil para mais itens, mas também pode funcionar aqui

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

Ou simplesmente não use um loop:

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)

Espero que isso ajude

    
por 20.07.2017 / 04:23