Kreis in Excel mit formelabhängiger Farbe zeichnen

Hi,

ich will in Excel einen Kreis zeichnen der abhängig von einer Formel die WAHR oder FALSCH ist eine andere Füllfarbe hat, ähnlich wie die bedingte Formatierung, nur eben als Kreis. Das ganze soll eine Ampeldarstellung werden. Es gibt für jedes Licht einen Kreis der entweder hellgrau oder die entsprechende Farbe hat.
Ich hoffe mir kann da jemand weiterhelfen.

Gruß
Björn

Hallo Björn
Ich habe da was gebastelt. Ob es genau das ist, was Du brauchst, weiss ich nicht.
Ich habe eine Datei hochgeladen:
http://www.file-upload.net/download-1636653/Ampel.xl…
Beim öffnen musst die die Makros aktivieren!
In Tabelle1 ist das Diagramm mit den farbigen Textfeldern verknüpft. Wenn Du auf grün klickst, sollte der Kreis grün werden usw. Wenn Du in dieser Tabelle den Bereich C2:C4 verschieben willst, musst Du auch die Makros anpassen!
In Tabelle2 sind die Kreisfarben mit WAHR und FALSCH verbunden.
Ich hoffe, ich kann Dir damit etwas helfen.
Grüsse Niclaus

Ok, ich habs jetzt doch noch hinbekommen. Wenn aber jemand eine einfachere Lösung hat wäre ich auch daran interessiert. Hier eine Lösung:

  • Ich hab die Ampel mit der Zeichnen Toolbar gezeichen, also einfach drei Kreise in einem Viereck

  • Die Kreise haben als „Alternativen Text“ einen identifizierer („Rot“/„Gelb“/„Grün“)

  • Die Formeln bleiben in Zellen stehen in denen ich sie bisher auch hatte

  • Mit folgendem VBA Code aktualisier ich die Farben der Ampeln wenn das Blatt neu berechnet wire:

    Option Explicit

    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    If TypeOf Sh Is Worksheet And Sh.Name = „Ampeldarstellung“ Then
    Dim Shape As Shape
    For Each Shape In Sh.Shapes
    Select Case Shape.AlternativeText
    Case „Rot“
    If Sh.Cells(11, „E“).Value Then
    Shape.Fill.ForeColor.RGB = RGB(255, 0, 0)
    Else
    Shape.Fill.ForeColor.RGB = RGB(192, 192, 192)
    End If
    Case „Gelb“
    If Sh.Cells(12, „E“).Value Then
    Shape.Fill.ForeColor.RGB = RGB(255, 255, 0)
    Else
    Shape.Fill.ForeColor.RGB = RGB(192, 192, 192)
    End If
    Case „Grün“
    If Sh.Cells(13, „E“).Value Then
    Shape.Fill.ForeColor.RGB = RGB(0, 255, 0)
    Else
    Shape.Fill.ForeColor.RGB = RGB(192, 192, 192)
    End If
    End Select
    Next
    End If
    End Sub

Hm, das ist natürlich auch ne Möglichkeit, danke. Nur wirds da denk ich schwerer eine Ampel zu bauen wo man alle drei Kreise sieht. Hm, wie hast du denn bei dem Diagramm gesagt welche Farbe es haben soll, abhängig von welchem Wert.
*blind is*

Nur wirds da schwerer eine Ampel zu bauen wo man alle drei Kreise sieht.

Da hast Du recht. Ich kriege das nicht hin, mehrere Kreise in ein Diagramm zu packen. Man könnte drei Diagramme nebeneinander oder untereinander stellen.

Hm, wie hast du denn bei dem Diagramm gesagt welche
Farbe es haben soll, abhängig von welchem Wert.

Wenn Du in meiner Tabelle1 alle drei Felder C2 bis C4 mit 1 füllst, kommst Du am einfachsten zum einfärben. Jedes Segment so markieren, bis im Kontextmenü die Auswahl „Datenpunkt formatieren…“ erscheint. Dann die Farbe bestimmen.

Dein Hinweis von 11:07, das mit Zeichnen zu erledigen, finde ich interessant. Ich schau mir das mal genauer an.

Grüsse Niclaus

Hallo Björn
Würdest Du Deine Excel-Datei bitte mal hochladen. Ich hab’s gemäss Deinen Angaben probiert, komme aber nicht weit.
Vielen Dank
Niclaus

Achso, jetzt ist das mit dem Einfärben klar *vor-kopf-schlag*, ein doppelklick auf das Segment reicht auch aus, da is kein Kontextmenü nötig. :smile:

Unter
http://www.file-upload.net/download-1637045/Ampel.xl…
findest du und jeder den es interessiert die fertige Ampel nach der Diagramm-Methode, die meiner Meinung besser ist als mein erster Ansatz. Man braucht kein VBA und so kann man z. B. auch einfach die Zellen in denen die Formeln stehen verschieben. Bei meinem Ansatz müsste man dann denke ich nochmal das Skript händisch anpassen wenn sich die Referenzzellen verschieben.

Gruß
Björn

Ein weiterer Nachteil der VBA Lösung ist dass man die Ampelteile nicht gruppieren kann, die einzelnen Lichter müssen einzeln bleiben. Man kann nur zum Anordnen gruppieren, muss aber danach die Gruppierung wieder lösen, ansonsten gehts nicht. Die Diagramme kann man problemlos gruppieren.

Klar, hier ein Beispiel:

http://www.file-upload.net/download-1637084/Ampel_VB…

Unten auf deine Antwort findest du aber auch nochmal entscheidende Nachteile dieser Variante, neben dem zwangsweisen aktivieren von Makros.
Ich vermute dass du über einen dieser Nachteile gestolpert bist. Hast du vielleicht die Ampelteile gruppiert? Das geht nur zum anordnen, danach muss die Gruppierung wieder weg.
Oder wolltest du einfach 0 und 1 reinschreiben? Dann musst du die Funktion nicht Workbook_SheetCalculate sondern Workbook_SheetChange nennen, mein Beispiel war darauf ausgelegt dass in dem Sheet Formeln berechnet werden wenn sich die Ampel anpassen muss.

Hast du vielleicht die Ampelteile gruppiert? Das geht
nur zum anordnen, danach muss die Gruppierung wieder weg.

Ja, genau: ich hab alles gruppiert!
Vielen Dank
Niclaus

Wie gesagt, das is leider einer der Nachteile von der VBA Lösung, zumindest so wie ichs gemacht hab. Man kann bestimmt auch in Groups rein und da weiter kucken, aber ich find die Diagramm Lösung eh besser. :smiley: