Dost dobře není možné, aby zamykání listů vedlo na zamčení celého sešitu. Jde o dva odlišné objekty. Nevhodně napsané, případně špatně umístěné makro ale může zamknout i listy v jiných otevřených sešitech. Bezpečné je umístění makra v rámci příslušného listu, který se má zamykat. Pokud zamykám aktivní list, měl bych si ověřit, zda je aktivní právě ten, který chci zamknout. Víc bez ukázky neumím říct.
Před časem tu byl zveřejněný dotaz na změněné chování nemodálních formulářů, které ponovu přestanou být viditelné po přepnutí na jiný sešit. Tento jev tvrdě postihl také moje doplňky, které nabízely své služby právě pomocí nemodálních formulářů.
Poměrně nedávno jsem našel odpověď na podstatu tohoto jevu na www.jkp-ads.com/Download.asp v utilitě ModelessFormOnTop. Její využití mi umožnilo plně obnovit funkčnost mých doplňků pro E-2013 i E-2016 (všechny starší Excely se chovají k nemodálním formulářům tak, že je nechávají trvale OnTop).
V běžném povídání o Excelu se pojem "tabulka" používá pro tři odlišné datové struktury. Když si odmyslím kontingenční tabulku, která má zavedený přívlastek, zbývají dva druhy. Jedním je datově (a zpravidla i graficky) uspořádaná oblast buněk. Druhým je tabulka, spojená s objektem ListObject. Oběma se říká tabulka, ale jde o pojmy s významně odlišnými vlastnostmi. Pro popisy obsahu a chování potřebuji oba pojmy odlišit. Existuje u nás zavedené terminologické odlišení těchto dvou odlišných datových struktur?
Příklad, doplněný o Alova doporučení (ale s jinými vzorci), uvádím v příloze. Realizuje jak zaplnění prázdných řádků, tak dynamické zkrácení ověřovacího seznamu o tyto řádky.
Mimochodem, postřehl jsem, že již není nutné excelské sešity v příloze balit do zipu. Příjemná změna!
Dík za podnět. Poslal jsem jádro problému. V reálu je to součást sešitu s makry, kde jsem to sdružení zbývajících jmen udělal přes Worksheet_Change a Sort. Váš vzorečkový postup se mi ale líbí víc, protože se obejde bez makra. Dík za další nápad!
Došlo mi, že grafika toho sešitu nebude ve starém Excelu fungovat dobře. Proto nedoporučuji sešit zkoušet v XP nebo v ještě starších Excelech.
Před časem jsem pro účely školení napsal sešit s názornou demonstrací práce vybraných funkcí. Zkuste se podívat na listy Skalár v příloze. Lze tím plně nahradit jak COUNTIFS, tak SUMIFS a funguje to i ve starých Excelech.
Moc nerozumím, proč, ale zabralo to! Dík za pomoc!
Potřeboval jsem vytvořit prezentační seznam, který by nabízel jména z členského seznamu, ale tak, aby tato nabídka již nenabízela jména, která byla do prezentačního seznamu dříve vložena. To má zabránit duplicitní prezentaci. Napsal jsem jednoduchý příklad, který to umí, ale má jednu divnou vlastnost. Nabídka z ověření pracuje správně, ale ověření nereaguje na ruční vstup, který se neshoduje s povolenými jmény.
Podobné chování služby Ověření dat jsem zatím nepotkal. Ví někdo, čím je to způsobeno a co se s tím dá případně dělat?
Nikdy jsem nepotkal někoho, kdo by dokázal napsat takovou zrůdu se vzorcem delším než je povolený limit. Hádám na nějakou chybu v sešitu. Bez ukázky těžko radit, co s tím.
Výsledek, který nabízí elninoslov, vypadá dobře, ale zobrazená položka není číslem, se kterým by šlo dál počítat. Pokud to nevadí, převod na text se vzhledem záporného času lze provést několika různými postupy. S použitím funkce HODNOTA.NA.TEXT (TEXT eng.) to může např. vypadat takto:
=KDYŽ(B2<B1;"-";"")&HODNOTA.NA.TEXT(ABS(B2-B1);"[h]:mm")
Položka typu Datum/Čas je v podstatě číslo, jehož celá část udává datum ve dnech a jehož zlomková uvádí čas v rámci dne. Z toho pohledu nic nebrání tomu, abychom mohli dvě takové položky mezi sebou řádně odečíst. Problém je se záporným výsledkem, který se sice správně vypočítá, ale Excel ho nechce v běžném časovém formátu zobrazovat (to umí v časovém systému 1904, před jehož použitím ale důrazně varuji). Lepší je při zobrazení pracovat s absolutní hodnotou rozdílu a zápornost výsledku ošetřit zvlášť.
To je hezký příklad odlišné filozofie vzorců a VBA. Pokud se hodnoty na list2 promítají pomocí vzorců v buňkách listu2, pak zrušení hodnot ve zdroji zruší také hodnoty na příjmu. Asi jako když se díváte na televizi. Když přestane pracovat vysílač, zhasne vám obrázek. Když chci hodnotu na listu2 ponechat, musím včas změnit vzorec na hodnotu. Pak už se ale nová hodnota z listu1 na list2 nedostane (vzorec je fuč). Pokud to nevadí, je převod vzorce na hodnotu řešením.
VBA pracuje jinak. Popadne hodnotu z listu1 a namaluje ji na list2. Jde o jednorázový krok. Když smažu zdroj, list2 dál hodnotu ukazuje. Přenos nové hodnoty na list2 ale musím ve VBA opakovat pokaždé, když se má něco změnit. Z vašeho zadání není jasné, jak se to má chovat v čase.
Posílám něco pro inspiraci s využitím ověřovacích seznamů. Je tam i kousek VBA kvůli tomu, že ověřování není moc dobrá technika. Ale v podstatě to běhá i bez toho VBA.
Word prakticky už léta jako programovatelný nástroj nepoužívám. Ze starých zkušeností jsem si nevybavil žádné problémy ve spolupráci Excelu s Wordem. Teď jsem na zkoušku vybral poměrně složitou hlavičku z Excelu, uložil ji Ctrl-C do schránky a Ctrl-V ji přenesl do Wordu jako jeho tabulku. To mi prošlo bez problémů, i s tím, že jsem mohl následně tu tabulku ve Wordu volně editovat.
Když jsem se rozhodl převést tu tabulku na text, provedla to nabídka Wordu Nástroje tabulky /Rozložení / Převést na text opět bez problémů. Celý ten průzkum (opět opakuji, že s Wordem pracuji výhradně jako s prostým textovým procesorem) mi trval cca 5 minut. Nějak nevím, v čem je problém. Když to ručně jde a když si k tomu mohu spustit makrokameru, neměl by být problém potřebná makra spáchat.
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.