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

Shapes in bestimmten Bereich löschen

Forumthread: Shapes in bestimmten Bereich löschen

Shapes in bestimmten Bereich löschen
ChrisW
Hallo Leute,
Ich habe 4 verschiedene Shapes erstellt, die als Vorlage dienen sollen mit den Namen "ShapeRot", "ShapeGelb", "ShapeGrün", "ShapeBlau".
Von diesen Shapes mache ich Kopien die ich je nach Bedingung im Blatt plaziere.
Diese Shapes sind in einem bestimmten Bereich "I4:Z17".
Beim Update dieses Blattes, sollen die "Shapes" die ich reinkopiert habe alle wieder gelöscht werden, aber nicht die Shapes die ich als Vorlage habe um dann neu im sheet verteilt zu werden.
Wie kann ich alle "Shapes" in einem Bereich auswählen ohne die Originale, die in einem anderen Bereich des Blattes "A1:A4" sind ?
Ein Problem ist auch, dass die Kopien den gleichen Namen haben wie die Originale :c(
Vielen Dank für Eure Hilfe
Chris
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Shapes in bestimmten Bereich löschen
02.03.2010 13:03:34
welga
mal ungetestet:
for n=shapes.count to 5 step-1
shapes(n).delete
next n
vielleicht hilft es.
Gruß
welga
AW: Shapes in bestimmten Bereich löschen
02.03.2010 13:11:28
Reinhard
Hallo Chris,
Sub loesch()
Dim Sh As Shape
For Each Sh In ActiveSheet.Shapes
If Intersect(Sh.TopLeftCell, Range("A1:A4")) Is Nothing Then Sh.Delete
Next Sh
End Sub

Gruß
Reinhard
Anzeige
AW: Shapes in bestimmten Bereich löschen
02.03.2010 13:16:53
Rudi
Hallo,
Sub tt()
Dim shp As Shape
For Each shp In Shapes
If Intersect(shp.TopLeftCell, Range("A1:A4")) Is Nothing Then shp.Delete
Next
End Sub

Gruß
Rudi
Super, Vielen Dank - Chris
02.03.2010 13:45:19
ChrisW
Hallo Alle,
Cool, vielen Dank
Chris
;
Anzeige
Anzeige

Infobox / Tutorial

Shapes in bestimmten Bereich löschen


Schritt-für-Schritt-Anleitung

Um Shapes in einem bestimmten Bereich zu löschen, während die Originale erhalten bleiben, kannst du folgenden VBA-Code verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)".
    • Wähle "Einfügen" > "Modul".
  3. Kopiere den folgenden Code in das Modul:
Sub loesch()
    Dim Sh As Shape
    For Each Sh In ActiveSheet.Shapes
        If Intersect(Sh.TopLeftCell, Range("A1:A4")) Is Nothing Then
            Sh.Delete
        End If
    Next Sh
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus:
    • Gehe zu Entwicklertools > Makros.
    • Wähle loesch und klicke auf Ausführen.

Dieser Code löscht alle Shapes, die nicht in der Range "A1:A4" liegen. Du kannst die Range nach Bedarf anpassen.


Häufige Fehler und Lösungen

  • Fehler: Shapes werden nicht gelöscht
    Lösung: Stelle sicher, dass die Shapes, die gelöscht werden sollen, tatsächlich außerhalb des angegebenen Bereichs liegen. Überprüfe auch, ob die korrekten Zellreferenzen verwendet werden.

  • Fehler: Makro kann nicht ausgeführt werden
    Lösung: Überprüfe die Makrosicherheitseinstellungen in Excel. Stelle sicher, dass Makros aktiviert sind.


Alternative Methoden

Eine alternative Möglichkeit, Shapes zu löschen, ist die Verwendung einer Schleife mit einer Zählvariable. Hier ist ein Beispiel:

Sub tt()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        If Intersect(shp.TopLeftCell, Range("A1:A4")) Is Nothing Then
            shp.Delete
        End If
    Next
End Sub

Dieser Code funktioniert ähnlich wie der erste und bietet eine weitere Option, um Shapes in einem bestimmten Bereich zu löschen.


Praktische Beispiele

Angenommen, du hast Shapes mit den Namen "ShapeRot", "ShapeGelb", "ShapeGrün", "ShapeBlau", die du in einem bestimmten Bereich platzierst. Mit dem oben genannten Code kannst du sicherstellen, dass nur die Kopien dieser Shapes gelöscht werden, während die Originale in "A1:A4" erhalten bleiben.


Tipps für Profis

  • Gruppiere Shapes: Wenn du mehrere Shapes hast, die zusammen gelöscht werden sollen, kannst du sie gruppieren. Das macht die Verwaltung einfacher.
  • Namen anpassen: Es kann hilfreich sein, die Shapes beim Erstellen eindeutige Namen zu geben, um Verwechslungen zu vermeiden.
  • Fehlermeldungen einbauen: Füge error handling in deinen VBA-Code ein, um mögliche Laufzeitfehler abzufangen und zu beheben.

FAQ: Häufige Fragen

1. Kann ich einen bestimmten Typ von Shape löschen?
Ja, du kannst den Code anpassen, um nur Shapes eines bestimmten Typs zu löschen, zum Beispiel nur Rechtecke oder Kreise.

2. Was ist, wenn ich mehrere Bereiche definieren möchte?
Du kannst zusätzliche If-Bedingungen in deine Schleife einfügen, um mehrere Bereiche zu überprüfen.

3. Ist dieser Code in allen Excel-Versionen anwendbar?
Der bereitgestellte VBA-Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren.

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