Überspringen eines Elements in einem Array in einem Kopiermakro von Excel nach PowerPoint


0

Ich bin neu hier mit etwas, das mich wochenlang verblüfft hat.

Ich habe ein Makro, das Excel-Bereiche von einem Blatt auf eine vorbereitete PowerPoint-Folie kopiert. Dies geschieht mit einem Array wie dem folgenden:

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)

Kopieren Sie nun 3 Sätze von Bereichen in 3 verschiedene Folien. Meine Frage ist, ob es möglich ist, ein Makro zu codieren, das die 2. Folie (Array 2) überspringt, sodass es nur auf den Folien 1 und 3 eingefügt wird.


Ja. Überprüfen Sie unter bestimmten Bedingungen, ob Sie sich auf Folie zwei befinden, und führen Sie sie aus, Continue foroder überprüfen Sie, ob Sie sich auf Folie eins oder drei befinden, und führen Sie Ihre Logik aus. Um eine bedingte Prüfung durchzuführen, verwenden Sie If.
Seth

Wie würde ich ifin diesem Fall eine verwenden? Kann ich einfach etwas tun wie: If Array(2) Continue for Array(3) End If Nicht sehr vertraut mit Arrays zu arbeiten, da es mein erstes Mal ist. Es war ein Glücksfall im Vergleich zu meiner vorherigen Methode, für jeden Bereich einen Code zum Kopieren und Einfügen zu erstellen.
Simo Keng

Antworten:


1

Wenn Sie nur 3 Artikel haben, haben Sie einige Optionen

Wie im Kommentar erwähnt (nicht die effizienteste Option):


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

Das nächste ist nützlicher für mehr Gegenstände, aber es kann auch hier funktionieren


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

Oder verwenden Sie einfach keine Schleife:


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)

Hoffe das hilft

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.