Dnes se objevil dotaz na barvu pozadí buňky. Kdysi jsem tady na fóru zveřejnil mojí původní verzi testu (funkce spouštěná jako vzorec). Je to delší doba a tak jsem náhodou přišel na novinku - chování funkcí v Libre Office a původní verzi jsem upravil.
Originálně tato funkce byla a je určena jen do konkrétního sešitu. Důvod je prostý - výsledek je text který je stále funkcí. Proto se musí nejprve načíst a vložit zpět (nebo jinam) jen jako text. Když bude těchto funkcí několik - začnou se někdy "hádat", respektive dávají nesprávné výsledky.
Další věcí je to, že jsou stále aktivní a dělá to problémy při novém otevření sešitu - znovu se vlastně přepočítávají. Také z tohoto důvodu se musí testovat v sousední buňce. Například pokud budeme testovat barvy v A1, funkci musíme umístit do buňky B1.
K této funci byl dotaz, že to nechodí z maker nad všemi sešity - důvod byl ten, že chybným zavoláním, nebo zapomenutím - ponecháním funkce aktivní sešit vyhazoval hlášení. Jedná se o tuto Funkci :
Function BarvaPozadi() 'Vypíše číslo barvy pozadí buňky vlevo
oCell = ThisComponent.CurrentController.getSelection()
With oCell.RangeAddress
SH = .Sheet
SC = .StartColumn
SR = .StartRow
End With
oSheet = ThisComponent.Sheets(SH)
oCell = oSheet.GetCellbyPosition(SC-1, SR)
barva = oCell.CellBackColor
pismo = oCell.CharColor
BarvaPozadi = "Číslo barvy pozadi = " & barva & " Číslo barvy písma = " & pismo
End Function
Tato funkce deklarovaná jako Public funguje i z knihovny MojeMakra Standard - tedy nad všemi sešity. Ale to výslovně nedoporučuji. Jsou ale uživatelé kteří potřebují testovat barvy často - například proto aby napodobili co nejvěrněji šablony a podobně.
Public Function BarvaPozadi() 'Vypíše číslo barvy pozadí buňky vlevo
oCell = ThisComponent.CurrentController.getSelection()
With oCell.RangeAddress
SH = .Sheet
SC = .StartColumn
SR = .StartRow
End With
oSheet = ThisComponent.Sheets(SH)
oCell = oSheet.GetCellbyPosition(SC-1, SR)
barva = oCell.CellBackColor
pismo = oCell.CharColor
BarvaPozadi = "Číslo barvy pozadi = " & barva & " Číslo barvy písma = " & pismo
End Function
______________________________________________________________
U LibreOffice se objevilo nové chování funkcí, které umožňuje pravidelně spustit tuto funkci a ve výstupu není vzorec ale text. To je velmi pohodlné pro práce podobného typu. Ta už se dá spouštět z hlavní knihovny standard bez negativ původní verze. Bohu žel u AOO tato funkce nefunguje.
Ale v Libre Office se výsledek zapíše do dvou řádků (buňka se 2x zvětší ve smyslu výšky). Proto je číslo barvy na konci a dá se lépe kopírovat oproti původnímu provedení. Ale je tady ještě jedna důležitá změna. Funkce se vkládá přímo do testované buňky. Pokud potřebujeme testovat i barvu písma tak do testovací buňky něco napíšeme (cokoliv - text, číslo, vzorec) a obarvíme. Tak nastavíme estetiku buňky. Můžeme například pro neto účel někam kde to nevadí nakopírovat vzory které potřebujeme vyhodnotit a přímo do každé takové buňky vložíme =COLORS(). To můžeme vložit ze schránky a aktivovat postupně nebo naráz (pomocí dialogu najít "=" a nahradit za "=".)
Public Function Colors 'Vypíše čísla barev přímo v buňce kterou testujeme
oCell = ThisComponent.CurrentController.getSelection()
With oCell.RangeAddress
SH = .Sheet
SC = .StartColumn
SR = .StartRow
End With
oSheet = ThisComponent.Sheets(SH)
oCell = oSheet.GetCellbyPosition(SC, SR)
barva = oCell.CellBackColor
pismo = oCell.CharColor
oCell.Formula = "Číslo barvy pozadi = " & barva & Chr(13) & "Číslo barvy písma = " & pismo
oSheet.Rows(SR).Height=900
Colors = oCell.String
End Function
Editoval neutr (23. 1. 2018 14:52:39)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ