Seite 1 von 1
Automatische Veränderung der Füllfarbe nach Zellwertänderung
Verfasst: Fr, 11.03.2022 08:21
von Lederpille
Moin, moin,
ein "kleines" Problem beschäftigt mich schon die halbe Nacht und ich wäre sehr dankbar, wenn einer von Euch eine Lösung für mich hätte.
Ich habe in meiner Tabelle eine Spalte, in der Zahlenwerte die sich häufig ändern, addiert werden. Das Ergebnis der Addition wird am Ende in einer Ergebniszelle ausgeworfen. Ändern sich die Werte in der Spalte, ändert sich natürlich auch das Ergebnis.
Nun wäre es schön, wenn sich die Füllfarbe der Ergebniszelle automatisch verändert, je nachdem ob das Ergebnis, nach Eingabe neuer Werte, größer oder kleiner geworden ist.
Gibt es dafür eine Lösung die auch für einen Calc-Anfänger umsetzbar ist?
Vielen Dank im voraus,
Lederpille.
Re: Automatische Veränderung der Füllfarbe nach Zellwertänderung
Verfasst: Fr, 11.03.2022 14:47
von F3K Total
Moin,
Lederpille hat geschrieben: Fr, 11.03.2022 08:21
Gibt es dafür eine Lösung die auch für einen Calc-Anfänger umsetzbar ist?
Das ist ja eine tolle Frage. Grundsätzlich, nein!
Woher soll denn das Programm wissen, dass du deinen Vergleich dann machen willst, wenn du drei Werte in deiner Tabelle geändert hast? Oder vier? Oder sieben ...
Mir fällt dazu nur eine Lösung per Makro ein.
Das folgende Makro macht was du willst, wenn du die Datei nach dem Ändern deiner Werte speicherst, und damit signalisierst, jetzt bist du mit den Änderungen fertig.
Code: Alles auswählen
REM ***** BASIC *****
Const sSheet as String = "Tabelle1" 'Tabellenname
Const sRange as String = "A2:A20" 'Summenbereich
Const sCell as String = "A23" 'Summenzelle mit Farbmarkierung
Sub Set_modification_color
Dim FunctionAccess as Object
ServiceFunctionAccess = createUnoService("com.sun.star.sheet.FunctionAccess")
oSheet = Thiscomponent.Sheets.getbyName(sSheet)
oRange = oSheet.getCellrangeByName(sRange)
oCell = oSheet.getCellrangeByName(sCell)
dCurrentValue = oCell.Value
aData = oRange.DataArray
dSumme = ServiceFunctionAccess.callFunction( "SUM",Array(oRange.Data))
if dSumme > dCurrentValue then
oCell.CellBackColor = RGB(0,255,0) 'grün
elseif dSumme < dCurrentValue then
oCell.CellBackColor = RGB(255,0,0) 'rot
else
oCell.CellBackColor = -1 'keine Hintergrundfarbe
end if
oCell.Value = dSumme
End Sub
Beispiel anbei
Gruß R
Re: Automatische Veränderung der Füllfarbe nach Zellwertänderung
Verfasst: Sa, 12.03.2022 08:23
von Toxitom
Hey zusammen,
also, ganz ohne Makro wird das tatsächlich wohl nicht gehen.
Neben der Lösung von F3K würde ich aber wohl eine einfachere vorschlagen:
Bedingte Formatierung: Vergleich der aktuellen Summe mit einer Zelle, in die vorherige Summe abgelegt wurde. Die könnte auch versteckt sein.
In dem Fall ändert sich die Farbe unmittelbar nach Eingabe eines neuen geänderten Wertes.
Das Makro wird jetzt nur noch benötigt, um die Summe als Vergleichswert in die Vergleichszelle zu speichern. Das Makro könnte dann an das Ereignis "Dokument geschlossen" oder auch an "Dokument öffnen" gebunden werden - und fertig. Dadurch entfällt der manuelle Aufruf eines Makros und die Farbe der Zielzelle verändert sich dynamisch bei jeder Eingabe eines Wertes.
Das Makro wäre dadurch etwas Kürzer

)
Code: Alles auswählen
Sub ZellWertKopieren
with thisComponent.sheets.getByName("Tabelle1")
.getCellRangeByName("D1").value = .getCellRangeByName("B12").value
end with
End Sub
In dem Falle wäre die "versteckte" Zelle D1 und die Summenzelle B12.
VG Tom
Re: Automatische Veränderung der Füllfarbe nach Zellwertänderung
Verfasst: Sa, 12.03.2022 08:57
von F3K Total
Hallo zusammen,
Lederpille hat geschrieben: Fr, 11.03.2022 08:21
...nach Eingabe neuer Wert
e ...
Es kann natürlich sein, dass Lederpille gemeint hat, dass sich die Farbe nach jedem neuen Wert ändern soll, ich habe es so vestanden, dass er mehrere Werte ändern will um dann zu sehen wie sich die Gesamtsumme verändert hat.
Jetzt hat er also zwei Lösungsmöglichkeiten zur Wahl.
Gruß R
Re: Automatische Veränderung der Füllfarbe nach Zellwertänderung
Verfasst: So, 13.03.2022 07:50
von Lederpille
Guten morgen zusammen und vielen Dank für Eure Antworten. Ich werde das gleich mal ausprobieren.
Gemeint war tatsächlich so etwas wie eine Aktientabelle. Verändern sich Parameter, verändert sich auch der Wert der Aktie. Also wenn sie steigt -grün -,wenn sie fällt -rot-.
Schade, dass das offensichtlich nur über ein Makro funktioniert (bin halt Anfänger), aber ich werde mich da mal rein arbeiten.
Also vielen Dank noch mal und schönen Sonntag.