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

Objekte nur im markierten Bereich löschen

Forumthread: Objekte nur im markierten Bereich löschen

Objekte nur im markierten Bereich löschen
Burghard
Hallo,
ich möchte in einem Tabellenblatt in einem ausgewählten/markierten Zellbereich (und nicht auf dem ganzen Tabellenblatt) alle Objekte löschen.
Dieses Makro löscht auf dem ganzen Blatt:
Sub Objekte_loeschen()
ActiveSheet.DrawingObjects.Select
Selection.Delete
Range("A1").Select
End Sub
Irgendwie so ähnlich soll es gehen:
Sub Objekte_loeschen_in_Bereich()
In Range.Selection.DrawingObjects.Select
Selection.Delete
Range("A1").Select
End Sub
Lösung/Hilfe wäre nett.
Schönen Gruß
Burghard
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Objekte nur im markierten Bereich löschen
10.07.2011 16:07:45
Beverly
Hi Burghard,
Sub Loeschen()
Dim oobElement As OLEObject
For Each oobElement In ActiveSheet.OLEObjects
If oobElement.Top > Selection.Top And oobElement.Left > Selection.Left And _
(oobElement.Top + oobElement.Height 



Anzeige
AW: Geht nicht
10.07.2011 17:49:03
Burghard
Hallo Karin,
leider funktioniert die Sache nicht bei mir. In meinem Tabellenblatt sind Zeichenelemente (= Pfeile)/DrawingObjects.
Wenn ich beispielsweise die Zeilen 15 bis 25 markiere, dann möchte mit dem Aufruf des Makros nur in dem markierten Bereich (und nicht beispielsweise in Zeile 5) die DrawingObjects löschen.
Mein Makro funktioniert, nur löscht es eben auf dem gesamten Tabellenblatt.
Schönen Gruß
Burghard
Anzeige
AW: Geht nicht
10.07.2011 17:56:22
Josef

Hallo Burghard,
dann vielleicht so.
Sub deletShapesInSelection()
  Dim objShp As Shape
  Dim rng As Range
  
  Set rng = Selection
  
  For Each objShp In ActiveSheet.Shapes
    If Not Intersect(objShp.TopLeftCell, rng) Is Nothing Then objShp.Delete
  Next
  
  Set rng = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Super! Klappt prima!
10.07.2011 18:31:02
Burghard
Hallo Sepp,
bestens! Genau das hab ich gesucht. Klappt einwandfrei! Danke!!!
Schönen Gruß
Burghard
Anzeige
Anzeige

Infobox / Tutorial

Objekte nur im markierten Bereich löschen


Schritt-für-Schritt-Anleitung

Um in Excel Objekte nur im markierten Bereich zu löschen, kannst du das folgende VBA-Makro verwenden. Dieses Makro löscht alle Shapes (Zeichenelemente) innerhalb des ausgewählten Zellbereichs:

Sub deletShapesInSelection()
    Dim objShp As Shape
    Dim rng As Range

    Set rng = Selection

    For Each objShp In ActiveSheet.Shapes
        If Not Intersect(objShp.TopLeftCell, rng) Is Nothing Then
            objShp.Delete
        End If
    Next

    Set rng = Nothing
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Kopiere den obigen VBA-Code in das Modul.
  4. Schließe den VBA-Editor und gehe zurück zu Excel.
  5. Wähle den Zellbereich aus, aus dem du die Objekte löschen möchtest.
  6. Drücke ALT + F8, wähle deletShapesInSelection aus und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler: Das Makro löscht nicht die gewünschten Objekte.
    Lösung: Stelle sicher, dass du den richtigen Zellbereich markiert hast, bevor du das Makro ausführst. Prüfe auch, ob die Objekte tatsächlich an den Zellen ausgerichtet sind.

  • Fehler: Es werden keine Shapes gefunden.
    Lösung: Überprüfe, ob die Objekte tatsächlich Shapes sind. Wenn du eingebettete Objekte löschen möchtest, musst du das Makro anpassen, um OLEObjects zu berücksichtigen.


Alternative Methoden

Wenn du Excel eingebettete Objekte löschen möchtest, kannst du das folgende Makro verwenden:

Sub LoeschenEingebetteteObjekte()
    Dim oobElement As OLEObject
    For Each oobElement In ActiveSheet.OLEObjects
        If Not Intersect(oobElement.TopLeftCell, Selection) Is Nothing Then
            oobElement.Delete
        End If
    Next oobElement
End Sub

Dieses Makro löscht alle eingebetteten Objekte im markierten Bereich. Führe die gleichen Schritte wie oben beschrieben aus, um es zu verwenden.


Praktische Beispiele

  1. Zeichenelemente löschen: Wenn du Pfeile oder andere Formen in einem bestimmten Bereich hast, kannst du das erste Makro verwenden, um diese zu entfernen.

  2. Eingebettete Grafiken entfernen: Verwende das zweite Makro, um alle eingebetteten Grafiken oder Objekte im gewählten Bereich zu löschen.


Tipps für Profis

  • Makros speichern: Speichere deine Makros in einer personalisierten Excel-Arbeitsmappe (Personal.xlsb), damit sie immer verfügbar sind, egal welche Datei du öffnest.

  • Schnellzugriff: Füge deine Makros zur Schnellzugriffsleiste hinzu, um sie schneller ausführen zu können.

  • Fehlerbehebung: Wenn ein Makro nicht funktioniert, setze Breakpoints im VBA-Editor, um den Code Schritt für Schritt zu überprüfen.


FAQ: Häufige Fragen

1. Wie kann ich alle Grafiken in einem Arbeitsblatt löschen?
Du kannst das folgende Makro verwenden, um alle Grafiken zu löschen:

Sub alleGrafikenLoeschen()
    Dim shp As Shape
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
End Sub

2. Kann ich das Makro anpassen, um nur bestimmte Objekte zu löschen?
Ja, du kannst Bedingungen in die Schleife einfügen, um nur spezifische Shapes oder OLEObjects zu löschen, z.B. nach dem Namen oder Typ.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige