Da się, ale wymaga elementów programowania:
albo przy użyciu funkcji operującej na skoroszycie (tzw. makro, np. Sub w Basicu),
albo samodzielnie napisanej (np. Function w Basicu) funkcji rozszerzającej repertuar wyrażeń w formułach.
To ostatnie rozwiązanie wymaga pewnej formalnej gimnastyki, ponieważ funkcja wywołana z poziomu formuły dowiaduje się o wartości przechowywanej w komórce, ale nie o jej adresie ani innych właściwościach (np. kolorze). Patrz np.
https://forum.openoffice.org/en/forum/v ... 3&p=509096
Jedna z możliwości (patrz np.
https://forum.openoffice.org/en/forum/v ... 2&p=481787) polega na przekazaniu do funkcji adresu komórki w postaci tekstu zamiast jako wyrażenia języka formuł (podobnie jak w tzw. adresowaniu pośrednim).
Pytanie, do czego to potrzebne. Jeśli chcesz to zrobić raz, dla konwersji, lepiej napisać makro. Jeśli projektujesz system który ma pracować w oparciu o kolory, lepiej się wycofać z tej decyzji. Kolor winien być skutkiem działania, nie przyczyną.
Pozostaje pytanie, co rozumieć przez „kolor czerwony” w przestrzeni RGB o 8-bitowej głębi każdej składowej? Tylko (255,0,0), różne (x,0,0) przy dowolnym x > ..., czy jeszcze inaczej?
Załączam szkic takiej funkcji w poniższym kodzie
Kod: Zaznacz cały
rem funkcja opracowana przez Jan_J na potrzeby uczestników serwisu forum.openoffice.org/pl
rem kopiowanie, modyfikacja, rozposzechnianie w dowolnych celach dozwolone
rem brak gwarancji dot. spełnania oczekiwań, skuteczności, bezpieczeństwa danych etc.
rem październik 2021
rem
rem wyciąga wektor barwy tła z komórki o wskazanym adresie
rem parametr: TEKST z adresem komórki
rem wynik: TEKST z opisem wektora RGB koloru tła
rem ograniczenie: działa tylko na pierwszoplanowym arkuszu (to jest wstępny szkic funkcji)
rem
function pokazKolor(adres as string) as string
rem tu uproszczenie dot. obsługi wyłącznie pierwszoplanowego arkusza
arkusz = ThisComponent.CurrentController.ActiveSheet()
zakres = arkusz.getCellRangeByName(adres)
kom = zakres.GetCellByPosition(0,0)
kolor = kom.cellBackColor()
pokazKolor = "(" & kolor \ 65536 & ", " & (kolor mod 65536) \ 256 & ", " & (kolor mod 256) & ")"
end function
oraz osadzony w skoroszycie