Excel Ampel Makro bei erneutem Klick wieder weiß?
Hallo ihr Lieben,
ich verzweifel gerade.
Ich möchte in Excel über Makros eine Ampel erstellen, wo man die Kreise jeweils nur anklicken muss, damit sie rot, gelb oder grün werden.
Wenn der Kreis weiß ist funktioniert das auch sehr gut mit dem Farbwechsel beim anklicken. Aber wie bekomme ich es hin, dass der Kreis bei erneutem anklicken wieder weiß wird? Bei erneutem Klicken bleibt er nämlich rot.
Hier mal der Code mit dem ich es versucht habe zu löse, allerdings klappt das nicht. Bin leider absoluter Anfänger in Sachen Makros aber brauche das für die Arbeit.
Vielen Dank im Voraus :)
Sub Test1()
' ' Test1 Makro '
'
ActiveSheet.Shapes.Range(Array("Flowchart: Connector 2")).Select
If (ForeColor = RGB(255, 0, 0)) Then
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = 0
.Transparency = 0
.Solid
End With
Else
With Selection.ShapeRange.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Solid
End With
End If
End Sub
2 Antworten
macht es ggf. Sinn beim Klick auf eines der drei Objekte die jeweils anderen auf Weiß zu setzen, unabhängig welche Farbe sie zuvor hatten? Bei einer Ampel (Statusampel) kann ja nur gleichzeitig eine Farbe aktiv sein.
Andersformuliert: Keine Abfrage auf den bisherigen Farbstatus, sondern rot färben und die beiden anderen weiß
ActiveSheet.Shapes.Range(Array("Oval 1")).Fill.ForeColor.RGB = RGB(255, 255, 0)
ActiveSheet.Shapes.Range(Array("Oval 2")).Fill.ForeColor.RGB = RGB(255, 255, 255)
ActiveSheet.Shapes.Range(Array("Oval 3")).Fill.ForeColor.RGB = RGB(255, 255, 255)
den Rest brauchst Du vermutlich gar nicht an Einstellungen, wenn es einfach nur rot, gelb, grün bzw. weiß sein soll.
In meinem Beispiel heißen die Objekte eben Oval 1 - 3, musst Du bei Dir entsprechend anpassen.
Hat so funktioniert danke, habe das mit dem wieder weiß einfach durch einen Reset Knopf gelöst :)
Mach bei deiner Anweisung wenn die Farbe Rot ist ein :
.ForeColor.RGB = RGB(255,255,255)
rein, damit setzt du den Wert dezidiert auf weiß.
Btw hast du schon mal versucht das ganze zu debuggen, setz mal einen Breakpoint in die beiden Zweige des If, vielleicht wird einer gar nicht ausgeführt.