Když se uživatelů zeptám, jak něco v buňkách listu skryjí, jsou odpovědi většinou následující:
a) stejná barva písma jako má pozadí,
b) přeplácnutí oblasti grafickým objektem stejné barvy, jako má okolí,
c) skrytí celých řádků či sloupců, případně celého listu.
První metoda je sice jednoduchá, ale ne dvakrát čistá a univerzální (změna barvy pozadí a nucené přizpůsobení barvy textu). Druhá je podobně nečistá a tfujtajblová. Jsou situace, kdy se dají zkousnout nebo jsou nutné, ale při běžné práci na ně prosím zapomeňte.
Třetí způsob nebude nikdy ohraný a jeho užití je podmíněno umístěním skrytých informací do bloku, nejlépe vpravo od viditelné oblasti. Skrytě tak můžete používat seznamy pro ovládací prvky, složitější podmínky pro vyhodnocování obsahu buněk, mezivýpočty atp.
Tato technika nabízí i zajímavý efekt, pokud skryjete všechny sloupce vpravo a všechny řádky níže (klepnutí myší do záhlaví prvního skrývaného sloupce/řádku a stisk CTRL + SHIFT + šipka vpravo/dolů). Obrázek ukazuje stav, kdy na kartě Zobrazení navíc odškrtnete zobrazování mřížky a záhlaví. V Poli názvů jsem pak zadal a potvrdil stiskem ENTER zápis X100, abych se zbavil náznaku ohraničení aktivní buňky (aktivní se stane právě buňka s adresou X100, tedy vpravo a níže vůči zobrazované oblasti).
Pozor! Skrytí sloupců/řádků, může být nebezpečné, pokud se v dané oblasti vyskytují grafické objekty (kontrolujte jejich chování – viz pravé tlačítko / Velikost a vlastnosti, položka Vlastnosti). Může se stát, že po skrytí získají nulovou velikost a pak se velmi špatně dohledávají (zkuste kartu Domů, skupinu Úpravy / Najít a vybrat / Vybrat objekty a Podokno výběru). Na konci nezapomeňte odznačit položku Vybrat objekty, jinak nebude schopni vybírat buňky. Leckdy objekty nulové velikosti spolehlivě odstraní až makro.
Dialog Formát obrazce ukazuje i možnost objekt netisknout. Jeho viditelnost na listu lze nastavit prostřednictvím ikonky oka v Podokně úloh.
Tip 1: Excel s každým obrázkem na pozadí buněk (viz karta Rozložení stránky / Pozadí) vydláždí celou plochu listu. Jediná šance, jak tomu vizuálně zamezit, je skrýt další „dlaždice“ právě skrytím řádků a sloupců. Ani tak bohužel nebude vše v cajku. Excel totiž při otevírání sešitu bez záhlaví pořád udržuje odsazení obrázku právě o jeho rozměry a pomáhá snad jen změna měřítka tam a zpět. Jednoduše bug…
Viditelnost ovládacích prvků ActiveX na listu je dána vlastností Visible. (To platí i pro přístup ke grafickým objektům nebo třeba listům z VBA.)
Pozn.: Aby to nebylo tak jednoduché… V rámci listu a vykreslování ovládacích prvků na nich vstupuje do problematiky kolekce Shapes.
Z praxe: Prvky, které se objevují třeba na exportovaném listu, zpravidla rovnou mažeme metodou Delete.
K zamyšlení: Trochu se zasněte a pak zrealizujte jeden jediný univerzální ComboBox pro celý list, který se objeví pouze u potřebných buněk a jehož obsah se mění v závislost na sloupci, do nějž buňka spadá…
Tip 2: Uživatele můžete omezit i v rolování na listu, a to tak, že adresu vymezené oblasti přiřadíte do vlastnosti ScrollArea – viz editor VBA (ALT + F11), výběr listu v okně Project a přiřazení hodnoty k vlastnosti v okně Properties (pokud jej nevidíte, tak F4). Poté nebude možné klepnout myší mimo tuto oblast, své chování přizpůsobí i posuvníky, a pravděpodobně jediná možnost, jak vidět buňky za „elektrickým ohradníkem“, je maximalizovat aplikaci na monitoru. Jejich obsah ovšem zjistit lze (prostřednictvím skoku přes Pole názvů a nebo odkazem a následným odečtením z Řádku vzorců). Svobody pohybu docílíte vymazáním obsahu políčka u vlastnosti ScrollArea.
Na paměti mějte i možnost celého skrytého listu (nebo naopak si zvykněte dávat do sešitu veřejný list „Nastavení“). Excel umí přímo načítat do prvků a roletek Data / Ověření položky ze skrytého listu téhož sešitu, ze zavřeného sešitu bez prostředníka nikoliv.
Tip 3: Zatímco klasicky skrytý list (přes kontextové menu na oušku listu) uživatel může zobrazit, existuje snadná cesta, jak mu to ztížit. Stačí vybrat list v okně Project a v okně Properties nastavit vlastnost Visible na xlSheetVeryHidden. Neuvidí tak aktivní volbu Zobrazit v kontextovém menu na oušku.
A jdeme dál. Takřka kouzelnou možností individuálního skrytí obsahu buňky je
d) formát buňky, kterému se obecně říká „tři středníky“.
Středníky ve skutečnosti oddělují sekce vlastního formátu buňky. Formát samozřejmě neovlivní zobrazení obsahu buňky v Řádku vzorců.
Vzorce nám před zraky uživatele pomůže chránit
e) zámek buňky (listu)
Pozn. Nebuďte naivní, heslo listu lze snadno odstavit.
Je-li naopak cílem vytisknout podklady se vzorci, pak vám budiž návodem následující obrázek.
Představte si situaci, kdy chcete na listu ukázat třeba zadání úloh a s odstupem času správné odpovědi vedle (neuvažujeme teď bezpečnost ukrývání řešení písemné práce na listu). V tom případě nabízím další chod uvařený ze známých ingrediencí, jež máte po ruce. A nejde o nic složitého, vlastně namixujeme předchozí znalosti. Jedná se o spojení ovládacího prvku formuláře s podmíněným formátováním.
Zaškrtávací políčko provážeme na buňku (naformátovanou zmíněnými třemi středníky). Ta bude obsahovat pravdivostní hodnoty PRAVDA/NEPRAVDA (zaškrtnuto, odškrtnuto). Podmíněný formát nasazený na skrývanou oblast buněk testuje hodnotu NEPRAVDA a oblast v takovém případě zneviditelní (pozadí a ohraničení bez barvy, formát obsahu také tři středníky). Jak prosté…
Uvedená technika se bohužel nedá aplikovat na postupy (dílčí úkony prováděné na stejné oblasti buněk). Ty při prezentaci někteří autoři zpracovávají tak, že jednotlivé kroky realizují makry a pomáhají si i grafikou (lze samozřejmě i natočit video či připravit flash animaci bokem). Pozn. Výše zpracovaná GIF animace sice běží v nekonečné smyčce, ale rozumně se nedá zastavit. Pokud má špatné načasování (je stejné pro všechny snímky), pak není vhodná pro výuku, ale spíš jen na ukázku „před a po“.
f) dialog Vzhled stránky
Ačkoliv se tisku budeme věnovat jindy, dnes opět jen nasměrování – karta Rozložení Stránky / skupina Vzhled stránky / spouštěč dialogového okna Vzhled stránky a záložka List. Zde můžeme nastavit oblast tisku, kupříkladu ovlivnit zpracování chybových hodnot a komentářů při tisku a nebo o některé prvky tištěné tabulky obohatit (opakování hlavičky na každém listu, doplnění o záhlaví a mřížku, …).
Seznam definovaných názvů si musíme připravit na listu předem.
Lze skrýt celý sešit?
Inu, lze, uložte a spouštějte jej jako doplněk (přípona .xla/.xlam). Jeho listy pak nebudou nikdy vidět (viz také vlastnost IsAddin objektu ThisWorkbook v okně Properties).
Lze skrývat částí okna aplikace?
V tomto článku se problematice věnovat podrobně nebudeme, proto jen náhled na nastavení…
Zobrazení ovlivňují také vlastní pohledy, zamčení struktury v rámci sešitu a další věci (zobrazení přes celou obrazovku, skrytí Pásu karet, …). S pomocí API pod VBA lze skrývat téměř vše.
Lze skrýt celou aplikaci?
Ano, i objekt Application má vlastnost Visible. Ostatně jistě se vám stalo, že aplikace zůstala „viset“ v rámci běžících procesů na pozadí, i když navenek neměla svého zástupce na systémové liště. Někdy ji naopak chceme spouštět skrytě – například v rámci naplánovaných úloh a aktualizace dat (prostřednictvím VBScriptu, teoreticky i přes PowerShell). Pozor na to, že Excel 2013/2016 se staví jinak k instancím Excelu a jeho oknům.
Na závěr bych zmínil možnost umísťovat informace i mimo buňky – do spižírny představované definovanými názvy, jež lze aplikovat ve vzorcích listu. Tam si můžete „nasyslit“ text, číselné hodnoty, ale i pojmenované vzorce a dokonce celé tabulky (maticové konstanty). Někdy příště si ukážeme i jiné skrýše a šifrování. Pro dnešek.. cink.
Příloha:
skryvane_casti.zip