Nechce se mi věřit, že mi někdo soudný může doporučovat, abych hledal na Googlu správnou syntaxi jednotlivých příkazů. K tomu je zabudovaná nápověda určená a měla by bezpečně sloužit, a to okamžitě a bezvýhradně. Pokud jdu hledat na Google, hledám způsob řešení a použitelný algoritmus, a ne přiblblou syntaxi pro jednu metodu. V takovém případě jsem ochotný do hledání investovat i delší čas. Hledat ale dlouhé minuty na Googlu, jak napsat příkaz pro Sort, bych pokládal za projev vlastní debility. Navíc na Googlu najdu často ještě větší kraviny než v helpu...
Zas tak pochmurná, jak to vidí xlnc, mi kauza s nápovědou pro VBA v Excelu nepřipadá. Ano, českou nápovědu jsem kdysi našel v E-97. Tehdy jsem o VBA věděl tak málo, že mi ta půlka připadla jako celek. Zcela jistě platí, že není šprochu, aby na něm nebylo pravdy trochu (a někdy i víc než trochu). Vím o řadě dalších prohřešků nápovědy proti mravopočestnosti. Ale 10% její zcestnosti mi připadá přece jenom jako příliš kruté číslo. Třicet procent nedbalosti v překladu a ověření správnosti pro českou část návodu ale pokládám za dost reálný popis stavu.
Na druhé straně bych takový kritický pohled viděl jako skvělou příležitost pro vznik excelského bestseleru o chybách v jeho nápovědě. Jsem přesvědčený, že by si takový titul našel spoustu zájemců o jeho získání. Sám bych se postavil do fronty na jeden výtisk pro sebe. Jestli má xlnc situaci zmapovanou, jak o tom píše, mohl by s podobnou publikací významně vstoupit do dějin Excelu.
Nebývá časté, aby nápověda přímo od výrobce produktu obsahovala chyby. V případě nápovědy pro VBA v Excelu to však není tak úplná výjimka. Zejména postihuje jinak skvělý nástroj, kterým je ObjectBrowser, na který je čím dál tím menší spolehnutí. Je to škoda; zažil jsem dokonce časy, kdy celá nápověda pro VBA mluvila česky. Kde ty zlaté časy jsou ?!
Před chvílí jsem narazil na chybu v popisu metody Range.Sort pro vlastnost Orientation. Správně platí, že vlastnost určuje, zda chceme třídit data ve sloupcích (Orientation:=xlSortColumns - setřídí se řádky) nebo v řádcích (Orientation:=xlSortRows - setřídí se sloupce).
Popis pro uvedenou vlastnost je v nápovědě vadný, nenechte se proto mýlit - viz přiložený screen shot.
Píšete to hrozně složitě. Např. "meziobjekt" .Cells je tam nejspíš naprosto zbytečný. Když si napřed nadefinujete oblasti Zdroj a Cil jako Range, můžete pak napsat:
Zdroj.Copy: Cil.PasteSpecial xlPasteValues
Bez dlouhého zkoumání:
- metoda Copy pro objekt Range přenáší buňky včetně formátů; v tom smyslu byste neměl mít s naformátováním přijímající oblasti problém;
- pokud se chcete zbavit vzorců ze zdrojové oblasti, rozložte kopírování na dva kroky: (1) metodou Copy naplňte schránku, (2) metodou PasteSpecial obsah schránky přeneste do cílové oblasti; PasteSpecial se umí vzorců zbavit a buňkám formátování zachovat.
Vážený pane bedho, ve svém dotazu jste napsal: "...požaduje otevření odkazovaného excelu. Tato vlastnost mi přijde poměrně nesystémová...". Z toho lze usoudit, že o zpracování dat máte hodně zkreslené představy, protože získávání hodnot ze zavřených souborů se velmi příčí zásadám bezpečnosti dat. Neznám jinou oblast kromě tabulkových procesorů, kde by to vůbec bylo možné. Takže to, co jste chtěl, se nachází na samém pomezí toho, co je přípustné s daty dělat.
Za váš (a nejenom váš) problém ale pokládám, že si vůbec neuvědomujete, že byste se měl ptát tak, aby vám bylo rozumět. Na tomto fóru dostáváte odpovědi od lidí, jejichž čas je škoda utrácet luštěním něčeho, co nejste stavu popsat. Kdybyste takto připravený šel na právní poradu, kde každá započatá čtvrthodina stojí pět set, asi byste si své dotazy lépe promyslel. Když to ovšem máte zadarmo, proč byste si dělal násilí, že?
Za dodatečnou přílohu bych palec nahoru nedal. V podobných případech by měla být příloha samozřejmostí. Poskytnutí vhodné rady by totiž nemělo vyžadovat věštecké schopnosti pro správnou reakci.
Očekávat, že pro daný případ bude možné napsat "rozkopírovatelný vzorec", svědčí o nepochopení, co Excel při rozkopírování dělá: neděje se totiž nic jiného, než že se "tupě" rozkopíruje zdrojový vzorec v podobě R1C1. V tom spočívá genialita i omezení pro možnosti kopírování vzorců. V tomto schématu se prostě jméno souboru měnit nemůže!
Přijde mi velmi nesystémové, pokud autor příspěvku něco takového od Excelu očekával.
Pokusím se do toho zmateného zadání vnést svůj vlastní pohled na možnosti manipulací s řádky a sloupci ve vybrané oblasti buněk. Jde o mou laboratorní aplikaci z února 2009. Při troše dobré vůle by v ní mohl zadavatel najít inspiraci pro řešení svých potřeb.
Představa, že po výběru oblasti se tato oblast překopíruje na jiný list ve změněném pořadí sloupců, je na této obecné úrovni velmi nedomyšlená. Aby byla použitelná, potřebuje mít nejméně dva doplňkové parametry: cílové místo pro přemístění dat a způsob změny v uspořádání sloupců. Pak by už bylo možné napsat proceduru, která by takovou operaci realizovala.
Vše stojí a padá s postojem zákazníka k makrům. Pokud je zásadně negativní, bude opravdu obtížné najít nějaké rozumné řešení. Když bude zákazník podezíravý, zamítne i řešení pomocí VBScriptu, protože mu také připadne rizikové (každý program ve VBScriptu je vlastně makrem). Musím znovu zopakovat, že negativní vztah k makrům vyvolává záměrně sám Microsoft, aniž by proto byl jakýkoliv významný důvod.
Víckrát jsem byl před tento problém postaven. V řadě případů jsem uživatele přesvědčil, že se maker bojí zbytečně. A tam, kde to nešlo napřímo, tam jsem šel oklikou přes osobní sešit maker, případně přes doplněk. Tyto nástroje žádná varování o makrech nevydávají, takže zákazník nebyl před nimi nijak varován. Vlk se nažral a koza zůstala celá. Netvrdím, že to bylo zcela důsledné vůči makrům, zato zákazník dostal fungující aplikaci, která se o makrech nezmiňovala.
Svět si přeje být klamán.
Kombinace povoleného sdílení sešitu pro změny se současným zákazem maker je stav blízký pokusu o sebevraždu. Samo sdílení je mizerně zabezpečené, protože připouští datové kolize a bez podpory maker se z něj stává jízda na tygru. Kdo chce kam, až se ucho utrhne...
Čtěte prosím pozorněji! Elninoslov vám navrhuje, jak jednoduše vzorec s externím odkazem zadat. Po zadání začne váš sešit pracovat s externími odkazy do zavřených sešitů!
Pokud cizí sešit nemůžete otevřít ani při zadávání vzorce, můžete to udělat s ručním zápisem externího odkazu. To je ovšem o mnoho složitější, než jak vám poradil elninoslov. Ale samozřejmě - jde to!
Kdybyste ani tentokrát nerozuměl, kupte si za pár stovek učebnici Excelu, kde najdete, jak se to z ruky píše!
Obávám se, že pro ověřovací seznamy platí, že jejich starobylý původ nedovoluje měnit počet možností v nabídce. Posuvník (šoupátko) naopak pokládám za dobré řešení. Nevím, jak by bez něj šlo řešit nabídku z opravdu velkého množství možností.
Přímá kontrola vybrané oblasti pomocí události Worksheet_SelectionChange nepřichází v úvahu, protože byste tím "zabil" jakýkoliv jiný výběr buněk na listu. Lze si ale představit tlačítko, které by reagovalo na aktuálně vybranou oblast. Kontrola by pak mohla vypadat následovně:
If Selection.Columns.Count <> 8 Or Selection.Columns(1).Column <> 1 Then
MsgBox "Vadná oblast": Exit Sub
End If
Toto fórum se vzácně vyhýbá některým tématům (namátkou KT, DB, grafy, obrázky...). Z oblasti práce s obrázky posílám pro inspiraci ukázky vzhledu několika grafických aplikací ze své dílny. Inspirací pro jejich vznik byl vždy nějaký podnět z dotazů, na které jsem někomu odpovídal. Třebas na vás z mých ukázek taky vyskočí nějaká inspirace pro oživení prostředí Excelu.
Ukázka s dotykovou mapou dává šanci prezentovat spoustu regionálních informací v grafické podobě s použitím mých velmi rychlých procedur pro tvorbu hranic. Ukázka galerie obrázků zase dává šanci vytvářet paměťově úsporné obrázkové katalogy. A ukázka přesouvacího rébusu zase dokládá možnosti Excelu při manipulaci s grafickými objekty na ploše listu.
S tou přesouvačkou jsem před lety měl docela úspěch, když jsem jako vánoční pozdrav rozesílal rozstříhané rodinné obrázky, které si musel adresát sám poskládat. Pokud by vás taková myšlenka zaujala, stačí soukromě mi poslat vhodnou fotku (nejlépe formát pohlednice naležato). Když nebude velký nával, fotku rozporcuji a vložím do skládačky, kterou vám k vánocům věnuji. Zatím je dost času, abyste ji pak mohli použít jako přílohu ke svým vánočním pozdravům.
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.