AL napsal/a:
Asi to nie je podstatné, ale ja nemám SK Excel. Mám CZ inštaláciu, akurát som zmenil jazyk na EN.
Pro vlastní archivní účely jsem si zdokumentoval svůj průzkum chování přepínačů s rámečky na listu. Pokud to někoho zajímá, v příloze je text, doprovozený testovacím sešitem k tématu.
Není příloha - není řešení...
Ten vzorec mne zaujal zejména svou délkou a řadou vložených funkcí. Použil jsem ho jako další test pro svůj převodník vzorců z Sk na Cz. Sám prakticky nepoužívám seznamy typu array, psané ve složených závorkách. Zarazil mne převod separátorů, který mi v seznamu automaticky vznikl přechodem Sk=>En=>Cz z ";" na "," a nakonec na "\". Mám tušení, že to není v pořádku, a tak si nechám rád poradit, jak to se separátory v seznamu array dnes v českém Excelu platí. Matně si totiž vzpomínám, že se to hloupě nějak měnilo.
V příloze je obrázek formuláře s texty vzorců.
Souhlasím se zbytečnou komplikací při použití VBA. Jen vyhodnocovací vzorce stavu by byly o hodně průhlednější. Horší čitelnost vzorců pro sloupec A ostatně konstatoval už pepe...
Ještě ukázka z jednoho použitelného nástroje. Zápisy vašeho vzorce ve formátu R1C1 odpovídají buňce K2 (z okénka pod vzorci).
Omlouvám se, že jsem nabídl přístup k řešení pomocí VBA se semaforovým sloupcem K. Pepe74287 asi zadání pochopil líp než já a jeho řešení pomocí podmíněného formátování je nejspíš bližší představě zadavatele.
Za rozumnou radu pokládám, že byste měl pracovat s událostí Worksheet_Change, logiku vázat na řádek v objektu Target a měnit vlastnost buňky Interior.Color v "semaforovém sloupci".
Za nerozumné pokládám, aby někdo pro vás napsal logiku vyhodnocení zjištěného stavu. To už byste měl opravdu zvládnout pokud možno sám.
Už to tady víckrát padlo. Pokud nechcete použít některý ze specializovaných nástrojů, které pro tento účel jsou k dispozici, můžete zvolit následující manuální postup:
- aktivujte buňku se vzorcem,
- přepněte se Alt+F11 do prostředí editoru VBA
- z nabídky View zvolte možnost Immediate Window
- do zobrazeného okna zapište
?selection.formulaR1C1Local
Jako odpověď získáte přepis vzorce z aktivní buňky do formátu R1C1 v podobě, použitelné pro list. Tento výsledek pak můžete vložit do schránky pomocí Ctrl+C a s její pomocí ho přenést, kam potřebujete.
Jiná otázka je, k čemu vám takový postup má sloužit. Já žádný rozumný důvod pro něj neznám.
Nevím, jaké akce s listem provádíte. Nastavení "Přesun a zachování velikosti" by v každém případě mělo zabránit tomu, aby se velikost rámečku měnila. Navíc se rámeček musí přesouvat se svou "kotvící buňkou". Samozřejmě, jakmile začnete měnit velikost kotvící buňky (případně šířku nebo výšku řad, které rámečkem procházejí, rozhodí se poloha pravého a dolního okraje rámečku s novými hranicemi buněk. Ukotvení znamená propojení polohy levého horního rohu rámečku s kotvící buňkou. Pro rámeček nelze nastavit možnost "Přesun a změna velikosti", kterou byste nejspíš přivítal. Důvod nápověda neuvádí, ale je zřejmý z toho, že rámeček obhospodařuje také polohu svých vnitřních prvků; ty totiž nikdy nejsou ukotveny k buňkám, ale vždy k rámečku.
Nějak nevím, jestli reagujete na můj příspěvek. Pokud ano, pak nejspíš vaše makro nehledá správně první volný řádek (zpravidla se používá vyhledání posledního obsazeného, k němuž se připočítá jednička).
Variantní možnost volby 1900 a 1904 pro práci s kalendářními daty pokládám za jeden v velkých průserů Excelu. Před mnoha lety jsem zkusil spolupráci dvou sešitů s odlišným nastavením začátku kalendáře a výsledek byl katastrofický. Od té doby vím, že využití možnosti nastavení na 1904 je krajně riziková záležitost, pokud mohou data takového sešitu sloužit i jinde. Excel totiž rozdílné nastavení sešitů přehlíží a počítá nesmysly. Pro solitérní sešity to ovšem použitelné je.
Co znamená "podruhé potřebuji"? Budu předpokládat, že chcete plnit první volný řádek na listu List1. V tom případě si napřed zjistěte číslo N pro první volný řádek a pak místo Range("C4") plňte Cells(N, 3) atd.
Stačí prohlásit vaši tabulku za "tabulku" v pojetí Excelu (objekt ListObject podle VBA). Vyberte oblast s vaší tabulkou a pomocí Vložení / Tabulka jí udělte požadované chování. Přidávané řádky pak budou automaticky přejímat vlastnosti sloupců tabulky (včetně ověřovacích seznamů).
Doporučuji seznámit se podrobněji s chováním tohoto objektu. Umí řadu příjemných věcí, ale také vyvolává některá omezení.
Jedna z velmi rozšířených pověr o Excelu je, že vznik záporného času představuje chybu v Excelu. Správně platí, že Excel záporné časy odmítá zobrazit, přestože se záporný rozdíl časů bez jakýchkoliv problémů spočítá a může být součástí složitějších výrazů. Proto např. IFERROR v případě záporného času žádnou chybu neregistruje.
Znám dva postupy, jak záporný čas zobrazit. V prvním případě se záporný čas zobrazuje jako "červená hodnota" (podobně jako v účetním formátu čísel). V druhém případě jsou kladné časy skutečným číslem, zatímco záporné časy mají povahu znakového řetězce.
Oba postupy najdete v příloze.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.