Vracím se k tématu s tím, že jsem svůj původní algoritmus revize vzorců v buňkách doplnil o prohlídku vzorců v názvech, grafech a kontingenčních tabulkách s následnou lokalizací vzorců. V případě externích odkazů ve vzorcích pro ověření dat a pro podmíněné formáty se ukázalo, že se takové odkazy deformují tak významně, že jejich automatickou lokalizaci nelze realizovat. Na zjištěné případy reaguje prověrka pouze varovnými zprávami.
Proceduru pro indikaci externích linků v prověřovaném sešitě jsem plně převzal z příspěvku od xlnc. Tato procedura linky hledá, aniž by se je pokoušela nějak modifikovat.
Inovovaný nástroj LokalizaceVzorcuX je vybavený nemodálním formulářem s voláním obou možných prověrek. Je napsaný tak, aby mohl být použit jako běžný doplněk.
Obecně platí, že Dim Sesit vytvoří "pouzdro" pro objekt, který definujeme pomocí As, např. Dim Sesit as Workbook. Proměnnou Sesit pak můžeme naplnit objektem typu Workbook. Zatím ale je objektová proměnná Sesit prázdná (Sesit is Nothing). Teprve příkaz Set tuto proměnnou naplní potřebným obsahem, např. Set Sesit = ThisWorkbook. Od té chvíle, pokud oslovíme proměnnou Sesit, oslovujeme tím objekt ThisWorkbook.
Pomalu si zvykám, ale to, že o příspěvek bez náhrady přijdu, když se místnímu systému např. nelíbí příloha, je opravdu nepovedené. Doporučení na preventivní uschování mi připadne, jako kdybych před požitím oběda v hospodě měl vždycky napřed a pro sichr požít protijed.
xlnc napsal/a:
Barva pozadí buňky je zrádná věc, barva písma, ať už udělaná jakkoliv, je ovšem OČIVIDNÁ pitomost.
Znám velmi málo případů, kdy někdo používá barevné formátování buněk. Váš požadavek splní číselný formát (Číselný formát / Vlastní)
[Zelená][=1]"OK";[Červená]"NE"
Možná by to šlo ještě jednodušeji: tabulku první+druhá jsem šoupnul do schránky, kurzor nastavil na levý horní roh cílové oblasti a v menu "Vložit jinak" jsem vybral současně možnosti "hodnoty" a "transponovat". Já jsem tím způsobem získal to, co jsem očekával. Problém je jenom v tom, že zdrojové buňky neobsahují celá čísla, takže transponovaná tabulka vypadá formálně blbě. To ale spraví vhodné naformátování (nebo lépe úprava zdrojových tabulek).
Jestli jsou obě data v řádku umístěna do jedné buňky (a vypadá to tak, že ano), pak mám pro tazatele doporučení, aby se místo Excelu věnoval nějaké jednodušší práci. Složitá řešení hloupých zadání jsou jen na škodu věci.
Doporučení od xlnc asi povede na shánění a registraci potřebného prvku Active X. Jestli nemáte bohatší Excel než já, bude vám ten prvek zřejmě taky chybět.
Nabízím jinou možnost. Před lety jsem se nechal inspirovat a napsal jsem vlastní kalendář na bázi formuláře. Jedna z jeho variant byla určena pro rozšíření formuláře o další prvky. Pokud byste pokládal za rozumné můj formulář doplnit o své vlastní prvky, může to pro vás být řešení.
xlnc napsal/a:
Pár tipů na okraj:
a) Pracujte s poli (zde není asi větší důvod)
b) Rychlejší než metoda Copy (která zas.. schránku) je prostý odkaz z cílové oblasti do zdrojové, tj. cíl = zdroj
Znám ten problém a proč se to tak chová, jsem taky nezjistil. Všechno se v tom směru zjednoduší při práci s tabulkou (ListObject), kde se automaticky doplní nejen formátování, ale dokonce i vzorce, pokud se tam mají nacházet. Tabulky jsou uživatelsky přívětivé, ale mají i svá omezení. Navíc např. Sort pro tabulku má úplně jinou syntaxi ve VBA než obyčejná oblast buněk. Každá sranda něco stojí...
Přece jenom jsem se zamyslel nad tím, jestli bych nedokázal rozšířit záběr nástroje na další objekty při odstraňování vzdálených propojení. Ze svých snah jsem dopředu vyloučil externí linky pro grafické a další objekty. Soustředil jsem se na ty vlastnosti, které připouštějí existenci vzorců ve svém obsahu. Z tohoto výběru jsem se nakonec rozhodl řešit otázku vzdálených odkazů pro následující objekty:
buňky na listech; názvy listu i sešitu; ověření; podmíněné formáty; série v samostatných i zabudovaných grafech; pole v KT.
Vznikl mi ovšem hloupý problém: nemám k dispozici sešity s nechtěným propojením pro většinu z vyjmenovaných případů. Nemohu proto ověřit, jestli napsané rutiny opravdu dělají to, co od nich požaduji. Obracím se proto na ty, kteří mají k dispozici sešity s nechtěným propojením, jestli by nebyli ochotni zaslat některé z nich na mou adresu. Já bych získal materiál k testování a vy byste v příznivém případě dostali zpět "uzdravené" sešity. Pokud bude můj testovací proces zdárně ukončen, jsem rozhodnutý nástroj uvolnit pro obecné použití.
Pokud můj první algoritmus počítal pomalu, pak nabízím rychlejší, včetně měření času, abychom se nemuseli dohadovat, co je pomalu, a co rychle. Při nastavení N=20000 celá ta legrace u mne trvala 0,78 sec, pro zadaných 185 záznamů 0,03 sec. Mně to pomalu nepřipadne.
Nějak jsem nepochopil, v čem je problém.
Souhlasím s marjankajem. že bez znalosti smyslu dotazu nelze najít odpověď na něj. Pro sebe jsem dokončil svůj průzkum poznatkem, že pokud objekt Comment zviditelním pomocí Visible=True, zpřístupním tím spřažený objekt Comment.Shape, který má Type=4. Ten objekt je nadále propojený se zdrojovou buňkou, ale mohu s ním nakládat podobně jako s jinými kresbami v kolekci Shapes. Objekty Comment a Comment.Shape tedy mají společný obsah, ale odlišné chování. Nejsem si ale jistý, jak moc tohle pomůže tazateli.
Přece jenom se m podařilo najít nějaký (i když zvláštní) pořádek v chování komentáře. V podstatě pracuje ve dvou módech:
1. Základní mód je ten, jak jeho chování popisuje nápověda, v němž se komentář zobrazí při přechodu kurzoru přes jeho buňku, ale v místě, které nelze nastavit.
2. Při ovládání komentáře pomocí vlastnosti Visible má odlišné chování: ve stavu True se objeví v místě, kam jsme ho předtím umístili a ze kterého můžeme v tomto stavu komentář přemístit jinam. Přepnutím na False se komentář vrátí ke svému klasickému chování.
Buď je tedy komentář trvale zobrazený na místě, které jsme mu sami vybrali, nebo se ukazuje jen při přechodu kurzoru přes buňku, ovšem tam, kde sám chce. Vše závisí na aktuálním stavu vlastnosti Bunka.Comment.Visible.
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.