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

Grafik per VBA löschen

Forumthread: Grafik per VBA löschen

Grafik per VBA löschen
09.09.2002 08:54:36
Johannes
Hallo,

ich möchte per VBA eine Grafik in einem bestimmten Tabellenblatt löschen. Die Grafik wurde vorher ebenfalls per VBA eingefügt. Die Aufzeichnung mit dem Macrorecorder ergibt folgenden code:

ActiveSheet.Shapes("Picture 60").Select
Selection.Delete

Wenn ich jetzt per VBA löschen will, woher weiß ich dann welche Nummer die zu löschende Grafik hat?

Danke im voraus!

Johannes

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Grafik per VBA löschen
09.09.2002 10:35:26
L.Vira
wenns nur eine Grafik ist, kannst du sie über den Index ansprechen.
Select ist nicht erforderlich!
Sheets("Test").Shapes(1).delete
Re: Grafik per VBA löschen
09.09.2002 11:12:34
Johannes
Vielen Dank, funktioniert aber leider nicht. Hast du noch eine andere Idee? Warum heißt die Grafik "Picture 60", wenn ich per Hand lösche und mit dem Makrorecorder aufzeichne? Es gibt nur eine Grafik auf dem Blatt.

Gruß Johannes

Anzeige
Re: Grafik per VBA löschen
09.09.2002 15:21:13
L.Vira
nach welchen Kriterien die Namen vergeben werden, weiß ich nicht, nehme aber an, dass alee während einer Excel- Sitzung erstellten Objekte fortlaufend nummeriert werden.
Was soll nicht funktionieren?
Re: Grafik per VBA löschen
09.09.2002 15:47:46
Johannes
Hallo,

das Problem ist, dass auf dem Tabellenblatt außer der Grafik auch noch Command-Buttons sind, die nicht gelöscht werden sollen. Ich muss also die zu löschende Grafik konkret ansprechen können. Ich habe es jetzt mit:
ActiveSheet.Pictures.Delete
versucht, aber dann werden auch die Command-Buttons gelöscht.

Hast du hierzu noch eine Idee?

Anzeige
Re: Grafik per VBA löschen
09.09.2002 16:57:41
L.Vira
Davon hast du nix gepostet, du musst die verschiedenen Objekte über Type ansprechen, Bilder haben Type = 13
OLE- Button Type = 12
aus der Formularsxmbolleiste Type = 8
Re: Grafik per VBA löschen
10.09.2002 07:39:27
Johannes
Wie sieht dann die konkrete Anweisung aus um das Bild zu löschen?
;
Anzeige

Infobox / Tutorial

Grafik per VBA löschen in Excel


Schritt-für-Schritt-Anleitung

Um eine Grafik in Excel per VBA zu löschen, kannst Du folgende Schritte befolgen:

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

  2. Füge ein neues Modul hinzu: Rechtsklicke im Projekt-Explorer auf dein Workbook und wähle Einfügen > Modul.

  3. Gib den folgenden Code ein:

    Sub GrafikLoeschen()
       Dim shp As Shape
       For Each shp In Sheets("Test").Shapes
           If shp.Type = msoPicture Then ' Überprüfen, ob es sich um ein Bild handelt
               shp.Delete ' Bild löschen
               Exit For ' Schlaufe beenden, wenn das Bild gelöscht wurde
           End If
       Next shp
    End Sub
  4. Starte das Makro: Gehe zurück zu Excel, drücke ALT + F8, wähle GrafikLoeschen und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler beim Löschen: Wenn das Makro nicht funktioniert, überprüfe, ob der Name des Arbeitsblatts korrekt ist. Stelle sicher, dass das Arbeitsblatt "Test" tatsächlich existiert.

  • Falscher Objekttyp: Wenn Du versuchst, ein Bild zu löschen, achte darauf, dass Du den richtigen Typ verwendest. Bilder haben Type = 13, während Command-Buttons einen anderen Typ haben.


Alternative Methoden

Wenn Du die Grafik nicht per VBA löschen möchtest, kannst Du auch manuell vorgehen:

  1. Grafik auswählen: Klicke mit der rechten Maustaste auf die Grafik.
  2. Löschen: Wähle Löschen aus dem Kontextmenü.

Für komplexere Aufgaben kannst Du auch die Shapes-Sammlung nutzen, um gezielt Objekte nach Typ oder Namen zu löschen.


Praktische Beispiele

  • Löschen einer bestimmten Grafik:

    Sub BestimmteGrafikLoeschen()
       Sheets("Test").Shapes("Picture 60").Delete
    End Sub
  • Alle Bilder auf dem Blatt löschen:

    Sub AlleBilderLoeschen()
       Dim shp As Shape
       For Each shp In ActiveSheet.Shapes
           If shp.Type = msoPicture Then
               shp.Delete
           End If
       Next shp
    End Sub

Tipps für Profis

  • Verwende den Objekt-Index: Du kannst Grafiken auch über ihren Index ansprechen, z.B. Sheets("Test").Shapes(1).Delete, jedoch kann dies unvorhersehbare Ergebnisse liefern, wenn die Anzahl der Objekte auf dem Blatt variiert.

  • Verwende Type-Abfragen: Wenn Du verschiedene Objekttypen verwalten musst, nutze If shp.Type = msoPicture für Bilder und If shp.Type = msoOLEControlObject für OLE-Objekte.


FAQ: Häufige Fragen

1. Wie finde ich den Namen einer Grafik?
Um den Namen einer Grafik zu finden, kannst Du im VBA-Editor den Debugger verwenden oder in Excel die Grafik auswählen und die Eigenschaften im Aufgabenbereich überprüfen.

2. Kann ich mehrere Grafiken gleichzeitig löschen?
Ja, Du kannst eine Schleife verwenden, um alle Grafiken auf einem Blatt zu löschen. Achte darauf, nur die Typen zu löschen, die Du tatsächlich entfernen möchtest.

3. Was passiert, wenn ich das falsche Objekt lösche?
Wenn Du das falsche Objekt löschst, gibt es keine Rückgängig-Funktion in VBA. Stelle sicher, dass Du das richtige Objekt ansprichst, um versehentliche Löschungen zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige