Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: For each shape in Selection

For each shape in Selection
25.09.2008 10:28:00
Atikar
Hallo Leute,
ich würde gerne alle Namen der ausgewählten Shapes auslesen, leider bekomm ich das nicht hin, und im Archiv hab ich auch nichts gefunden.
Sollte so ähnlich aussehen:
For Each sShape in Selection
msgbox sShape.name
next sShape
leider funktioniert das nicht
Gruss
Atikar
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: For each shape in Selection
25.09.2008 11:17:25
Beverly
Hi Atikar,

Sub shapes_name()
Dim shShape As Shape
For Each shShape In ActiveSheet.Shapes
If shShape.Top > Selection.Top And shShape.Left > Selection.Left And _
(shShape.Top + shShape.Height 




Anzeige
AW: For each shape in Selection
25.09.2008 12:17:00
fcs
Hallo Atikar,
hier mein Lösungsvorschlag.
Das Aufwendigste hier wie so oft: Die Ausnahmen als Fehler sinnvoll abzufangen.
Gruß
Franz

Sub NamenSelektierterObjekte()
Dim objObject As Object
On Error GoTo Fehler
For Each objObject In Selection
With objObject
MsgBox "Name Objekt: " & .Name & vbLf & "Zelle links oben: " & .TopLeftCell.Address
End With
Next
Fehler:
If Err.Number  0 Then
Select Case Err.Number
Case 438 'Nur ein Objekt ist gewählt
Set objObject = Selection
With objObject
MsgBox "Name Objekt: " & .Name
End With
Case 1004
MsgBox "Es wurde kein Objekt selektiert"
Case Else
MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
End Select
End If
End Sub


Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Shapes in Excel VBA Auslesen und Verarbeiten


Schritt-für-Schritt-Anleitung

Um alle ausgewählten Shapes in Excel mit VBA auszulesen, kannst Du folgendermaßen vorgehen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" und wähle "Einfügen" > "Modul".

  3. Füge den folgenden Code ein:

    Sub NamenSelektierterObjekte()
       Dim objObject As Object
       On Error GoTo Fehler
       For Each objObject In Selection
           With objObject
               MsgBox "Name Objekt: " & .Name & vbLf & "Zelle links oben: " & .TopLeftCell.Address
           End With
       Next
    Fehler:
       If Err.Number <> 0 Then
           Select Case Err.Number
               Case 438 'Nur ein Objekt ist gewählt
                   Set objObject = Selection
                   With objObject
                       MsgBox "Name Objekt: " & .Name
                   End With
               Case 1004
                   MsgBox "Es wurde kein Objekt selektiert"
               Case Else
                   MsgBox "Fehler: " & Err.Number & vbLf & Err.Description
           End Select
       End If
    End Sub
  4. Führe das Makro aus: Wähle einige Shapes auf Deinem Arbeitsblatt aus und führe das Makro aus, um die Namen der ausgewählten Shapes anzuzeigen.


Häufige Fehler und Lösungen

  • Fehler: "Es wurde kein Objekt selektiert": Stelle sicher, dass Du tatsächlich Shapes ausgewählt hast, bevor Du das Makro ausführst.
  • Fehler 438: Dies tritt auf, wenn nur ein Objekt gewählt ist. In diesem Fall wird das Makro angepasst, um auch mit einem einzelnen Shape zu arbeiten.
  • Typkonflikte: Stelle sicher, dass Du Dim objObject As Object verwendest, um verschiedene Typen von Shapes zu unterstützen.

Alternative Methoden

Eine alternative Methode, um Shapes in einem Arbeitsblatt auszulesen, ist die Verwendung der ActiveSheet.Shapes-Sammlung. Hier ein Beispiel:

Sub shapes_name()
    Dim shShape As Shape
    For Each shShape In ActiveSheet.Shapes
        MsgBox shShape.Name
    Next shShape
End Sub

Diese Methode gibt die Namen aller Shapes auf dem aktiven Arbeitsblatt aus.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung der For Each-Schleife in VBA:

  1. Alle Shapes in einer bestimmten Region auswählen:

    Sub AuswahlShapesInBereich()
       Dim shShape As Shape
       For Each shShape In ActiveSheet.Shapes
           If Not Intersect(shShape.TopLeftCell, Range("A1:B10")) Is Nothing Then
               MsgBox "Form: " & shShape.Name
           End If
       Next shShape
    End Sub
  2. Shapes nach Namen auswählen:

    Sub AuswahlNachNamen()
       Dim shShape As Shape
       Set shShape = ActiveSheet.Shapes("MeinShapeName")
       shShape.Select
    End Sub

Tipps für Profis

  • Verwende With...End With-Blöcke, um den Code übersichtlicher und effizienter zu gestalten.
  • Dokumentiere Deinen Code mit Kommentaren, um die Lesbarkeit zu erhöhen.
  • Experimentiere mit For Each shp In ActiveSheet.Shapes, um gezielt Shapes zu manipulieren.

FAQ: Häufige Fragen

1. Wie kann ich ein bestimmtes Shape auswählen? Du kannst ein Shape nach seinem Namen auswählen, indem Du ActiveSheet.Shapes("ShapeName").Select verwendest.

2. Was kann ich tun, wenn mein Makro nicht funktioniert? Überprüfe, ob Du die Auswahl korrekt getroffen hast und ob der Code im richtigen Modul eingefügt wurde. Verwende auch die Debugging-Funktion im VBA-Editor, um Fehler zu identifizieren.

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