Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Shapes.Range Auswahl & Gruppierung

Forumthread: Shapes.Range Auswahl & Gruppierung

Shapes.Range Auswahl & Gruppierung
08.12.2002 16:05:59
Teodoro
Suche eine allgemeine Lösung für die Auswahl von Shapes:

So kann man mehrere Shapes auswählen: Mit Shape-Namen
ActiveSheet.Shapes.Range(Array("Shp1", "Shp2")).Select
oder mit Shape-Nummern
ActiveSheet.Shapes.Range(Array(1, 2)).Select
die Auswahl lässt sich anschliessend gruppieren.

Das Array lässt sich noch allgemein formulieren:
Dim arShapes() As Variant
Dim objRange As Object
arShapes = Array("Shp1", "Shp2")
Set objRange = ActiveSheet.Shapes.Range(arShapes)
objRange.Select

Was ich nicht schaffe, ist, das Array programmgesteuert zu füllen, etwa
arShapes(1)="Shp1"
(An Stelle des Strings "Shp1" sollte vermutlich ein anderer Typ angewendet werden, aber welcher ?)

Das wäre aber notwendig, damit ich mehrere von VBA erzeugte Shapes auswählen und Gruppieren kann.
Selection.ShapeRange.Group.Select
Kann jemand dabei helfen oder gibts für ShapeRange eine bessere Lösung ?

Teodoro

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Shapes.Range Auswahl & Gruppierung
08.12.2002 18:49:57
Micha
Hallo,

Wahrscheinlich liegt es am "SET"

Option Explicit

Sub Test_Feld_Shapes()
Dim i As Integer

Dim arShapes(1 To 3)
Set arShapes(1) = Tabelle1.Shapes(1)
Set arShapes(2) = Tabelle1.Shapes(2)
Set arShapes(3) = Tabelle1.Shapes(3)
For i = 1 To 3
If i = 1 Then
arShapes(i).Select
Else
arShapes(i).Select False
End If
Next
Selection......Was weiß ich
End Sub

Bei mir geht es!!

Micha

Anzeige
Re: Shapes.Range Auswahl & Gruppierung
08.12.2002 19:12:21
Nepumuk
Hallo Teodoro,
so klappt's

Gruß
Nepumuk
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Shapes.Range Auswahl und Gruppierung in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Shapes Auswahl mit Namen: Du kannst mehrere Shapes auf dem aktiven Arbeitsblatt mit ihren Namen auswählen. Dazu verwendest du den folgenden Code:

    ActiveSheet.Shapes.Range(Array("Shp1", "Shp2")).Select
  2. Shapes Auswahl mit Nummern: Alternativ kannst du die Shapes auch mit ihren Nummern auswählen:

    ActiveSheet.Shapes.Range(Array(1, 2)).Select
  3. Array für Shapes erstellen: Wenn du ein Array erstellen möchtest, um die Shapes programmgesteuert auszuwählen, kannst du dies wie folgt machen:

    Dim arShapes() As Variant
    Dim objRange As Object
    arShapes = Array("Shp1", "Shp2")
    Set objRange = ActiveSheet.Shapes.Range(arShapes)
    objRange.Select
  4. Shapes gruppieren: Nach der Auswahl der Shapes kannst du diese mit folgendem Befehl gruppieren:

    Selection.ShapeRange.Group.Select

Häufige Fehler und Lösungen

  • Fehler bei der Array-Dimensionierung: Achte darauf, dass du das Array korrekt dimensionierst. Wenn du arShapes programmatisch füllen möchtest, stelle sicher, dass du die richtige Syntax verwendest. Ein Beispiel könnte so aussehen:

    Dim arShapes(1 To 3) As Object
    Set arShapes(1) = ActiveSheet.Shapes(1)
    Set arShapes(2) = ActiveSheet.Shapes(2)
    Set arShapes(3) = ActiveSheet.Shapes(3)
  • Fehler beim Gruppieren: Wenn du versuchst, Shapes zu gruppieren, stelle sicher, dass sie auch ausgewählt sind. Verwende Select False, um zusätzliche Shapes hinzuzufügen:

    For i = 1 To 3
        If i = 1 Then
            arShapes(i).Select
        Else
            arShapes(i).Select False
        End If
    Next

Alternative Methoden

  • Verwendung der For Each Schleife: Du kannst auch eine For Each Schleife verwenden, um durch alle Shapes auf einem Arbeitsblatt zu iterieren:

    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        ' Hier kannst du Bedingungen hinzufügen, um spezifische Shapes auszuwählen
        shp.Select
    Next shp
  • Gruppierung in PowerPoint: Wenn du mit PowerPoint arbeitest, kannst du ähnliche Methoden verwenden, um Shapes zu gruppieren:

    ' In PowerPoint VBA
    Dim shpRange As Object
    Set shpRange = ActivePresentation.Slides(1).Shapes.Range(Array("Shape1", "Shape2"))
    shpRange.Group

Praktische Beispiele

  • Beispiel 1: Auswahl und Gruppierung:

    Sub GroupShapes()
        Dim arShapes() As Variant
        Dim objRange As Object
        arShapes = Array("Shp1", "Shp2", "Shp3")
        Set objRange = ActiveSheet.Shapes.Range(arShapes)
        objRange.Select
        Selection.ShapeRange.Group
    End Sub
  • Beispiel 2: Dynamisches Array:

    Sub DynamicShapeArray()
        Dim arShapes() As Variant
        Dim i As Integer
        Dim shapeCount As Integer
    
        shapeCount = ActiveSheet.Shapes.Count
        ReDim arShapes(1 To shapeCount)
    
        For i = 1 To shapeCount
            Set arShapes(i) = ActiveSheet.Shapes(i)
        Next i
    
        ActiveSheet.Shapes.Range(arShapes).Select
        Selection.ShapeRange.Group
    End Sub

Tipps für Profis

  • Füge Fehlermanagement hinzu: Verwende On Error Resume Next oder On Error GoTo für robusten Code, der auch bei Fehlern weiterarbeiten kann.

  • Verwende With-Anweisungen: Dies kann deinen Code sauberer machen und die Lesbarkeit erhöhen. Beispiel:

    With ActiveSheet.Shapes.Range(Array("Shp1", "Shp2"))
        .Select
        .ShapeRange.Group
    End With
  • Vermeide unnötige Auswahl: Wenn du Shapes direkt manipulieren kannst, ohne sie auszuwählen, ist das effizienter und schneller.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass ein Shape existiert, bevor ich es auswähle?
Du kannst die On Error Resume Next Anweisung verwenden, um Fehler zu ignorieren und dann zu prüfen, ob das Shape ausgewählt wurde.

2. Ist es möglich, Shapes auf mehreren Arbeitsblättern zu gruppieren?
Ja, du kannst mit einer Schleife durch die Arbeitsblätter iterieren und die gleichen Methoden anwenden, um Shapes zu gruppieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige