4.1k Aufrufe
Gefragt in Tabellenkalkulation von twototoulouse Mitglied (370 Punkte)
Hallo, ihr fleißigen Helfer!
Ist es möglich, in excel alle Grafiken in mehreren Arbeitblättern gleichzeitig zu löschen?

15 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
mir ist jetzt nur was mit Select eingefallen.

Option Explicit

Sub Loeschen()
Dim WsTabelle As Worksheet
Application.ScreenUpdating = False
For Each WsTabelle In Sheets
WsTabelle.Select
WsTabelle.Shapes.SelectAll
Selection.Delete
Next WsTabelle
Application.ScreenUpdating = True
End Sub


Gruß Hajo
0 Punkte
Beantwortet von twototoulouse Mitglied (370 Punkte)
Hi Hajo!
Erstmal Frohe Weihnachten und vielen Dank für Deine schnelle Antwort!
Wie muss ich das handhaben? Ist das ein Makro? Wie funktioniert das mit Select?
Bin leider nicht so der große Formel-Versteher.
Gruß
twototoulouse
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, gehe auf Deine Datei, rechte Maustaste, Einfügen Modul, Code ins rechte Fenster kopieren, VBA Editor schließen.
Register Ansicht, Befehlsgruppe Makros, auf Makro klicken, Makros anzeigen, Makro auswählen und ausführen.
Register Ansicht, Befehlsgruppe Makros, Scahlter makros, Makros Anzeigen, Makro auswählen.

Gruß Hajo
0 Punkte
Beantwortet von twototoulouse Mitglied (370 Punkte)
Hallo Hajo!
Habe das so durchgeführt( ich hoffe richtig ), bekomme aber leider beim Ausführen des Makros die Fehlermeldung "Laufzeitfehler'7' Nicht genügend Speicher" und der Debugger zeigt im Makro gelb: WsTabelle.Shapes.SelectAll
Gruß
twototoulouse
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
dann scheint es das Du zu viele Shapes in der Tabelle hast.
jetzt mal eine Lösung ohne select, jedes Shapes wird einzeln gelöscht.

Sub Loeschen2()
Dim WsTabelle As Worksheet
Dim InI As Integer
Application.ScreenUpdating = False
For Each WsTabelle In Sheets
WsTabelle.Select
For InI = WsTabelle.Shapes.Count To 1 Step -1
WsTabelle.Shapes(InI).Delete
Next
Next WsTabelle
Application.ScreenUpdating = True
End Sub


Gruß Hajo
0 Punkte
Beantwortet von twototoulouse Mitglied (370 Punkte)
Hallo Hajo!
Vielen Dank für Deine Mühe aber ich glaube, das wird mir zu kompliziert. Bekomme jetzt die Fehlermeldung"Laufzeitfehler 1004: Anwendungs- und objektdefinierter Fehler"Ich mache bestimmt irgendwo Fehler weil ich nicht so richtig den Durchblick habe. Trotzdem noch mal vielen Dank für Deine Mühe, werde die Grafiken wohl einzeln löschen.
Schöne Weihnachten
Gruß
twototoulouse
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ich kann das nur an meiner Datei testen, da ich Deine nicht sehe.

Gruß Hajo
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
ich erhalte in der Zeile

For Each WsTabelle In Sheets

Laufzeitfehler 13: Typen unverträglich. Wenn WsTabelle als Worksheet deklarierst ist, müsste es m.E. heißen:

For Each WsTabelle In Worksheets

Mit dieser Zeile kommt dann auch kein Fehler.

Die Tabelle muss übrigens nicht selektiert werden, wenn man darin etwas löschen will.


Ich würde es so lösen:

Sub Loeschen2()
Dim WsTabelle As Worksheet
Dim shaShape As Shape
Application.ScreenUpdating = False
For Each WsTabelle In Worksheets
For Each shaShape In WsTabelle.Shapes
shaShape.Delete
Next
Next WsTabelle
Application.ScreenUpdating = True
End Sub


Bis später,
Karin
0 Punkte
Beantwortet von twototoulouse Mitglied (370 Punkte)
Hi Karin!
Habe das ausprobiert und ich habe es sogar geschafft, es funktioniert. Allerdings habe ich auf einem Arbeitsblatt Steuerelemente die ich brauche, die sind leider auch mit verschwunden.Zählen die auch als Grafiken?
Gruß
twototoulouse
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi,

wie sind die Grafiken bezeichnet - heißen sie alle "Picture" mit einer fortlaufenden Nummer?

Bis später,
Karin
...