Jak zaszyć formatowanie warunkowe we własnej funkcji?

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Jak zaszyć formatowanie warunkowe we własnej funkcji?

Post autor: krzys59 »

Witam
Pytanie jak w temacie, jak zaszyć w Calc we własnej funkcji formatowanie warunkowe?
W najprostszym przykładzie, chcę sumować komórki a1 i b1 i jeśli wynik sumowanie jest >10 to format "zielony", a jeśli <=10 to format "czerwony".
Format "zielony" i "czerwony" mam zdefiniowany w spisie formatów.
Chcę użyć formatowania warunkowego ale za pomocą własnej funkcji, więc może to być w różnych miejscach arkusza. Potrafię to zrobić makrem, poprzez sprawdzenie wartości w zadanej komórce i potem ustawienie formatu w innej, ale używam bezwzględnych adresów, nie wiem jak to podpiąć do funkcji z wywołaniem z poziomu calca np =Policz(A1;B1) gdzie Policz to zdefiniowana funkcja.
Czy może odwoływać się z poziomu funkcji do gotowego makra ustawiającego format komórki? Może jednak można bezpośrednio z funkcji?
Pozdrawiam
Krzysiek
Minio
Posty: 323
Rejestracja: śr sie 01, 2012 1:48 am
Lokalizacja: (Poznań|Dziwnów), Polska

Re: Jak zaszyć formatowanie warunkowe we własnej funkcji?

Post autor: Minio »

Możesz ustawić styl komórki bezpośrednio z formuły.
Poczytaj o funkcjach STYL i JEŻELI. Prawdopodobnie będziesz potrzebował także BIEŻĄCY.

Przenośność takiego rozwiązania to zupełnie inna kwestia. Ale skoro już zdecydowałeś się na makra, to pewnie przenośność nie jest dla Ciebie priorytetem.
Mój blog o używaniu LibreOffice
LibreOffice 4.2.6, Debian testing amd64
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Jak zaszyć formatowanie warunkowe we własnej funkcji?

Post autor: belstar »

krzys59 pisze:Czy może odwoływać się z poziomu funkcji do gotowego makra ustawiającego format komórki?
Jan_J w poście http://forum.openoffice.org/pl/forum/vi ... =32&t=1868 napisał:
W OpenOffice argumenty adresowe Cell albo Range przekazywane do funkcji wywoływanych poprzez formuły nie zawierają obiektów typu Cell lub odp. Range, tylko pobrane z nich tablice wartości. Wobec tego w formule możesz sprawdzić wartość innej komórki, ale nie masz dostępu do jej obiektu, a w szczególności do jej koloru tła.
Wniosek sam się narzuca.

Zastosuj poradę Minia (źródło help)

Kod: Zaznacz cały

=Policz(A1;B1) + STYL(JEŻELI(BIEŻĄCY()>10;"Czerwony";"Zielony"))
Oczywiści musisz zdefiniować dwa style- czerwony i zielony
LibreOffice 5.1.2.2 Ubuntu 16 LTS
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Re: Jak zaszyć formatowanie warunkowe we własnej funkcji?

Post autor: krzys59 »

Dzięki za podpowiedź, choć to nie całkiem to o co mi chodzi.
Chcę problem formatowania warunkowego rozwiązać poprzez funkcję, bo zauważyłem dziwną rzecz, arkusze z wielokrotnym formatowaniem warunkowym, w kolejnych wersjach LO potrafią się kompletnie rozwalić (do tego jeszcze różne systemy operacyjne). A już jak ktoś ma wersję <4 to niestety bardziej skomplikowane formatowania całkiem wypadają. Dlatego szukam rozwiązania poprzez własne funkcje. Ale wygląda, że się nie da. Szkoda
Zablokowany