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

Alle Shapes in der Tabelle markieren

Forumthread: Alle Shapes in der Tabelle markieren

Alle Shapes in der Tabelle markieren
13.03.2009 11:37:55
Stefan
Hallo allerseits,
ich programmiere gerade ein kleines Organigrammtool, das mit vorgefertigten Shapes (Wordart / Autoformen / Textfelder / Bildern) ein fertiges Organigramm erzeugt in einem eigenen Tabellenblatt.
Zuletzt möchte ich nun per VBA alle Shapes dieses Tabellenblattes markieren (und anschließend in die Zwischenablage kopieren).
Der Makrorecoder zeichnet zB solchen Code für das Markieren auf:
ActiveSheet.Shapes.Range(Array("AutoShape 242", "Group 243", "Group 246", "Group 249", "Picture 252", "Picture 253", "Picture 254", "Picture 255")).Select
Nun variieren natürlich die verwendeten Shapes und ich bräuchte ein Schleife durch alle Shapes, die alle auswählt.
Es ist ja recht einfach eine Schleife durch zB alle Bilder und Wordartobjekte zu bekommen - etwa um sie zu löschen

Sub ALLES_LOESCHEN
Dim BILD As Picture
Dim FORM As Shape
For Each BILD In ActiveSheet.Pictures ' Alle Bilder löschen
BILD.Delete
Next BILD
For Each FORM In ActiveSheet.Shapes ' Alle Wordart löschen
If WORDART.Type = msoTextEffect Then
FORM.Delete
End If
Next WORDART
End Sub


Ich schaffe es auch, einen String zu erzeugen, der genau die Liste der Shapes enthält:


Sub KOPIERE_DIAGRAMM()
Dim BILD As Picture
Dim FORM As Shape
Dim ALLES(1 To 14)
Dim ANZAHL As Integer
Dim GESAMT As String
For Each BILD In ActiveSheet.Pictures ' Alle Bilder
ANZAHL = ANZAHL + 1
ALLES(ANZAHL) = BILD.Name
Next BILD
For Each FORM In ActiveSheet.Shapes ' Alle übrigen Formen
ANZAHL = ANZAHL + 1
ALLES(ANZAHL) = Form.Name
Next FORM
For T = 1 To ANZAHL
GESAMT = GESAMT & """" & ALLES(T) & """" & ", "
Next T
GESAMT = Left(GESAMT, Len(GESAMT) - 2)
MsgBox GESAMT
ActiveSheet.Shapes.Range(Array(GESAMT)).Select
End Sub


Zuletzt enthält der String GESAMT genau die Form, die der eingangs erwähnte Macrorecorder-Befehl verwendet.
Leider finde ich keinen Weg diesen String in den obigen Befehl erfolgreich einzubauen.
Hat jemand eine Idee ?
Ich bin für jede Unterstützung dankbar und wünsche euch allen noch ein schönes Wochenende,
Stefan

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Alle Shapes in der Tabelle markieren
13.03.2009 11:43:24
Josef
Hallo Stefan,
wenn du wirklich alle kopieren willst, dann reicht das.
ActiveSheet.DrawingObjects.Copy

Gruß Sepp

Anzeige
AW: Alle Shapes in der Tabelle markieren
13.03.2009 11:54:47
Stefan
Hallo Sepp
ich hatte schon befürchtet, dass es wesentlich einfacher geht als ich dachte :o)
Ich danke dir sehr und wünsche dir noch ein ganz feines Wochenende
lG
Stefan
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Shapes in der Tabelle markieren


Schritt-für-Schritt-Anleitung

Um alle Shapes in einem Excel-Arbeitsblatt zu markieren und anschließend in die Zwischenablage zu kopieren, kannst du die folgende VBA-Anleitung nutzen:

  1. Öffne dein Excel-Arbeitsblatt und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf „VBAProject (dein Arbeitsblattname)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Kopiere den folgenden Code in das Modul:

    Sub AlleShapesMarkieren()
        Dim SHAPE As Shape
        Dim GESAMT As String
        Dim ANZAHL As Integer
    
        ANZAHL = 0
        For Each SHAPE In ActiveSheet.Shapes
            ANZAHL = ANZAHL + 1
            GESAMT = GESAMT & """" & SHAPE.Name & """" & ", "
        Next SHAPE
    
        If ANZAHL > 0 Then
            GESAMT = Left(GESAMT, Len(GESAMT) - 2) ' Entferne das letzte Komma
            ActiveSheet.Shapes.Range(Array(GESAMT)).Select
        Else
            MsgBox "Es wurden keine Shapes gefunden."
        End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, indem du auf ALT + F8 drückst, das Makro „AlleShapesMarkieren“ auswählst und auf „Ausführen“ klickst.

Mit diesem Code kannst du alle Formen (AutoShapes, Bilder usw.) in deinem Arbeitsblatt markieren.


Häufige Fehler und Lösungen

  • Fehler: "Keine Shapes gefunden."

    • Lösung: Stelle sicher, dass du tatsächlich Shapes in deinem Arbeitsblatt hast. Überprüfe auch, ob die Shapes im aktiven Arbeitsblatt vorhanden sind.
  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs."

    • Lösung: Dieser Fehler tritt auf, wenn der Name der Shapes nicht korrekt ist. Stelle sicher, dass die Shapes tatsächlich existieren.
  • Fehler: "Typ nicht definiert."

    • Lösung: Überprüfe, ob du die erforderlichen Bibliotheken für VBA korrekt eingebunden hast. Dies kann in den Verweisen im VBA-Editor konfiguriert werden.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, gibt es auch alternative Methoden, um alle Formen und Bilder in Excel zu markieren:

  1. Manuelles Markieren:

    • Halte die Shift-Taste gedrückt und klicke auf jedes Shape, um mehrere auszuwählen.
  2. Verwendung des Auswahlfensters:

    • Gehe zu „Start“ > „Suchen und Auswählen“ > „Auswahlfenster“ und wähle alle Shapes aus der Liste aus.
  3. Copy-Paste-Methode:

    • Du kannst auch STRG + A verwenden, um alles auszuwählen und dann gezielt die Shapes in die Zwischenablage zu kopieren.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du mit Shapes in Excel arbeiten kannst:

  • Excel alle Bilder auswählen:

    Sub AlleBilderMarkieren()
        Dim BILD As Picture
        For Each BILD In ActiveSheet.Pictures
            BILD.Select
        Next BILD
    End Sub
  • Excel alle Grafiken markieren:

    Sub AlleGrafikenMarkieren()
        Dim GRAFIK As Shape
        For Each GRAFIK In ActiveSheet.Shapes
            If GRAFIK.Type = msoPicture Then
                GRAFIK.Select
            End If
        Next GRAFIK
    End Sub

Diese Beispiele helfen dir, gezielt mit verschiedenen Shape-Typen in Excel zu arbeiten.


Tipps für Profis

  • Optimierung des Codes:

    • Du kannst den Code anpassen, um nur bestimmte Typen von Shapes auszuwählen, z.B. nur Bilder oder nur AutoShapes.
  • Fehlerbehandlung hinzufügen:

    • Füge Fehlerbehandlungsroutinen hinzu, um das Skript robuster zu machen und unerwartete Fehler abzufangen.
  • Makros automatisieren:

    • Du kannst das Makro auch an einen Button in der Symbolleiste anheften, um die Ausführung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich alle Formen in Excel löschen? Du kannst folgendermaßen alle Shapes löschen:

Sub AlleShapesLoeschen()
    Dim FORM As Shape
    For Each FORM In ActiveSheet.Shapes
        FORM.Delete
    Next FORM
End Sub

2. Was sind AutoShapes in Excel? AutoShapes sind vordefinierte Formen wie Rechtecke, Kreise oder Pfeile, die du in Excel verwenden kannst, um Diagramme oder Grafiken zu erstellen.

3. Wie kann ich nur bestimmte Shapes auswählen? Du kannst Bedingungen in die Schleife einfügen, um nur bestimmte Shapes basierend auf ihrem Typ oder Namen auszuwählen.

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