Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Symbolsätze per Makro die Zweite

Excel Symbolsätze per Makro die Zweite
11.06.2015 08:37:09
TerPursche
Hallo zusammen,
ich hatte gestern schonmal etwas geschrieben, finde jetzt aber keine Möglichkeit in dem selben Thread erneut zu fragen, deswegen hier eine zweite Frage. Zur Info: Ich habe um eine Verbesserung meines Makros gebeten, welches die ausgewählte oder mehrere ausgewählte Zellen mit der linken Nachbarzelle vergleicht und mit der Abweichung als Indikator das IconSet Ampel setzt. Da bei einem IconSet ja leider nur absolute Zellbezüge erlaubt sind und man das Format deswegen nicht einfach kopieren kann habe ich die Lösung per Makro gesucht. Mein Makro hat dann Michael verbessert, sodass es auf mehrere aktive Zellen und nicht nur auf eine Zelle anwendbar ist (bestimmt nichts allzuschweres, aber ich bin ziemlicher Excel-Neuling). Folgend das aktuelle Makro:
Sub GruenWennGroesserLinkesTarget()
Dim c As Range
For Each c In Selection
c.FormatConditions.Delete
c.FormatConditions.AddIconSetCondition
c.FormatConditions(c.FormatConditions.Count).SetFirstPriority
With c.FormatConditions(1)
.ReverseOrder = False
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
End With
With c.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueNumber
.Value = c.Offset(0, -1) * "0,9"
.Operator = 7
End With
With c.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueNumber
.Value = c.Offset(0, -1)
.Operator = 7
End With
Next
End Sub

Nun weiss ich nicht, wieso ich das gestern nicht gefragt habe, aber ich hole es mal nach:
Im Moment wird dank

.Value = c.Offset(0, -1) * "0,9"
.Value = c.Offset(0, -1)

der Wert der linken Nachbarzelle entsprechend errechnet und dann dauerhaft die bedingte Formatierung mit dem errechneten Wert verglichen. Ist es auch möglich an der Stelle einen (absoluten) Zellbezug auf die Nachbarzelle zu setzen?
Zur Verdeutlichung:
Mit dem jetzigen Makro muss die bedingte Formatierung jedes Mal neugesetzt werden, wenn die "Vergleichszelle" bzw. deren Wert geändert wird. Wenn man hier Zellbezüge setzen könnte, müsste sich das ja automatisch aktualisieren, oder nicht?
Gruß,
Jan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Symbolsätze per Makro die Zweite
11.06.2015 12:56:33
TerPursche
Habe jetzt noch eine ganze Weile rumprobiert und bin mir nicht sicher, ob ich weitergekommen bin:
Der "neue" Code (nicht wundern, das makro ist ein leicht anderes, aber es geht ja eh nur um die .value):
Sub RotWennGroesserLinkesTarget()
' RotWennGroesser Makro
Dim c As Range
For Each c In Selection
c.FormatConditions.Delete
c.FormatConditions.AddIconSetCondition
c.FormatConditions(c.FormatConditions.Count).SetFirstPriority
With c.FormatConditions(1)
.ReverseOrder = True
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
End With
With c.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueNumber
.Value = c.Offset(0, -1).Address(True, True)
.Operator = 5
End With
With c.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueNumber
.Value = c.Offset(0, -1).Address(True, True) & "*1,1"
.Operator = 5
End With
Next
End Sub
Dies setzt auch bedingte Formatierungen, wenn man diese nachschaut, jedoch steht in den beiden Feldern dann folgendes:
="$E$5*1,1"
="$E$5"
statt (wie es funktionieren würde):
=$E$5*1,1
=$E$5
Bin ich auf dem richtigen Weg? Oder ist das eine Sackgasse?
Gruß!

Anzeige
AW: Excel Symbolsätze per Makro die Zweite
11.06.2015 13:13:39
TerPursche
Ich habs!
Sieht für mich aus wie ein klassischer Keine-Ahnung-von-VBA-Syntax-Fehler.
Falls es interessierte gibt, der funktionierende Code:
Sub RotWennGroesserLinkesTarget()
' RotWennGroesser Makro
Dim c As Range
For Each c In Selection
c.FormatConditions.Delete
c.FormatConditions.AddIconSetCondition
c.FormatConditions(c.FormatConditions.Count).SetFirstPriority
With c.FormatConditions(1)
.ReverseOrder = True
.ShowIconOnly = False
.IconSet = ActiveWorkbook.IconSets(xl3TrafficLights1)
End With
With c.FormatConditions(1).IconCriteria(2)
.Type = xlConditionValueNumber
'.Value = c.Offset(0, -1)
.Value = "=" & c.Offset(0, -1).Address(True, True)
.Operator = 5
End With
With c.FormatConditions(1).IconCriteria(3)
.Type = xlConditionValueNumber
'.Value = c.Offset(0, -1) * "1,1"
.Value = "=" & c.Offset(0, -1).Address(True, True) & "*1,1"
.Operator = 5
End With
Next
End Sub
Das Makro setzt für jede der ausgewählten Zellen das IconSet "Ampel" mit folgenden Bedingungen:
Rot: Wert aktive Zelle mehr als 10% über Wert linke Nachbarzelle
Gelb: Wert aktive Zelle zwischen Wert linke Nachbarzelle und 10% über Wert linke Nachbarzelle
Grün: Wert aktive Zelle kleiner oder gleich Wert linke Nachbarzelle
Die Ampeln aktualisieren sich jetzt im Gegensatz zu vorher sowohl, wenn der Wert der Nachbarzelle als auch wenn der Wert der aktiven Zelle geändert wird.
Gruß!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige