Hallo Sebastian,
mit Bildern habe ich bisher nicht viel zu tun gehabt. Drum musste ich mich erst mal ein bisserl einarbeiten. Dazu diente mir folgendes Bespielmakro:
Dim i
ActiveSheet.Pictures.Insert („c:\windows\web\wallpaper\düne.jpg“)
ActiveSheet.Pictures.Insert („c:\windows\web\wallpaper\herbst.jpg“)
ActiveSheet.Pictures.Insert („c:\windows\web\wallpaper\mondkrater.jpg“)
For i = ActiveSheet.Shapes.Count To 1 Step -1 'funktioniert
'For i = 1 To ActiveSheet.Shapes.Count funktioniert nicht
ActiveSheet.Shapes.Item(i).Delete
Next
Dabei funktionierte interessanterweise die Schleife, bei der die Bilder hochgezählt werden, nicht. Ganz im Gegentum zu der bei der runtergezählt wird.
Hi,
vielen Dank für die Antwort. Habe das Posting gefunden und
damit funktioniert es auch bestens. Nun ergibt sich aber ein
anderes Problem. Ich füge wenn ein bestimmter Wert erreicht
ist ein bestimmtes Bild ein über:
ActiveSheet.Pictures.Insert(„K:\test.jpg“).Select
Dabei wird dem Bild eine Bezeichnung verpasst. Wenn ich das
Bild nun aber wieder entfernen will per:
ActiveSheet.Shapes(„Bild“ & i).Select
Selection.Delete
Grundsätzlich gibt es bei VBA die sog. Aufzählungen, z.B. „Worksheets“, erkennbar meist am Plural-S am Ende. Diese sprechen alle im aktuellen Rahmen ansprechbaren Einheiten an. In diesem Fall also alle Tabellenblätter innerhalb der aktuellen Arbeitsmappe. Einzelne Objekte innerhalb der Aufzählung kann man verschieden ansprechen: entweder über Namen (z.B. Worksheets („Tabelle1“).Activate) (wie Du sie auch praktizierst) oder über einen Index. Für den Index gibt es 2 Varianten: eine Kurzform (Worksheets(1).Activate) und eine Langform (Worksheets.Item(1).Activate).
Übrigens kann man den makrorecordererzeugten Code recht einfach zusammenfassen:
Aus
ActiveSheet.Shapes(„Bild“ & i).Select
Selection.Delete
wird dann ein
ActiveSheet.Shapes(„Bild“ & i).Delete
Wobei I die laufende Nummer des eingefügten Bildes darstellt.
Das funktioniert aber nur wenn das Programm 100%ig korrekt
benutzt wird.
Das liegt in Deinem Verantwortungsbereich.
Deshalb möchte ich dem Bild gerne schon beim
einfügen eine eindeutige Bezeichnung verpassen, mit deren
Hilfe ich es dann auch wieder löschen kann.
Was gibt es eindeutigeres als einen Namen wie „Bild 1“? Oder einen Index?
Ich vermute, daß da Excel etwas Amok läuft (wie auch aus meinem obigen Beispiel ersichtlich). Du musst also ein bisserl rumprobieren und versuchen, den Bug zu überlisten.
Tut mir Leid daß ich keine exakte Lösung für Dein Problem habe. Aber auch das gehört zum Programmieren: wenn ein Weg nicht zum Ziel führt probiere einen anderen.
Martin