Marko ausführen bei bestimmtem Wert

Hallo,

ich versuche in Excel eine Funktion zu realisieren, bei der bei einem bestimmten Wert in einer bestimmten Zelle eine Grafik angezeigt wird.

Beispiel:

Überwachte Zelle ist C1

Wert in C1: 10 -> Keine Grafik
Wert in C1: 20 -> Grafik A

Ich gehe davon aus, dass zu diesem Zwecke ein Makro ausgeführt werden muss oder?

Hi,

ist ‚Marko‘ ein Hund oder warum willst Du ihn ausführen? Oder meintest Du ‚ausführen‘ im Sinne von ‚exportieren‘? Dann müsste ich aber wissen in welches Land…

Im Ernst: zu dem Thema habe ich am 5.2. auf ein Posting geantwortet. Da ist auch eine Schritt-für-Schritt Anleitung dabei.

Schönen Tag
Martin

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

Wobei I die laufende Nummer des eingefügten Bildes darstellt. Das funktioniert aber nur wenn das Programm 100%ig korrekt benutzt wird. 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.

Wie mache ich das?

Gruß

Sebastian

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