Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Doplňované postřehy s psaní aplikací v Excel VBA
V tomto článku jsou shrnuty postřehy, které jsem načerpal při psaní VBA kódu. Třeba se Vám budou hodit, při vytváření nových aplikací, nebo budete-li hledat chybu nebo se rozmýšlet jak na novou aplikaci (program) ve VBA.
Tato vlastnost je velice opomíjená. Prostě se začne něco programovat, což může chvíli fungovat, ale po čase se zjistí, že místo 5 osob potřebujeme analyzovat jich 7, ale již na listě nemáme prostor, jelikož další sloupce zabírají jiné údaje případně už z tohoto listu „čerpá“ jiný aplikace (program). Úprava nevhodně navrženého listu posléze zabere více práce, než pokud by se v úvodu sešlo několik osob a pohovořili o tom, co od budoucí aplikace očekávají.
Mít v listech nějakou logiku.
Doporučují mít viditelné a neviditelné listy (heslování a zamykání nechávám na každém), osobně hesla nepoužívám. Použití direktivy xlSheetVeryHidden je dostatečné. Kdo tento list dokáže zobrazit, dokáže i rozlousknout heslo (strejda google ochotně poradí).
Design prodává.
Jak má vypadat graficky aplikace je na samostatný článek, alespoň pár postřehů.
Vypnout zobrazování mřížky a poté navrhovat aplikaci.
Nastavit černobílý tisk (ať se šetří toner, když někdo dá tisk)
Omezit tisknutelnou oblast (tisk jednoho listu oproti několika desítkám). Přeci jen často jsou tiskárny centralizované a uživatel stiskne tisk a zapomene omezit počet listů.
Neslučovat buňky v listech, ve kterých se používají VBA výpočty. Osobně toto pravidlo obcházím tak, že výpočty a vše provádím na nesloučených buňkách a do listu, kde jde o grafickou podobu, tam již buňky sloučené mám.
Pokud pokládáte otázku proč neslučovat. Odpověď je jednoduchá, pokud se odkazuje na další buňky, tvoříte grafy, způsobuje to problémy. SUMA se sčítá vícekrát, grafy jsou nespojité, atd.
Takže hlavně neslučovat buňky. Ušetříte si spoustu problému.
Doporučeno je tvořit vzorce zleva doprava a shora dolů.
Osobně někdy toto pravidlo nedodržují a sumu umístím do záhlaví (tj. data jsou pod sumou). Výhodou je že po spuštění mám přehled (například o celkových výdajích aniž bych musel listovat dolů na poslední řádek.
Osobně se mi osvědčilo netvořit velké vzorce. Sice to není pro Excel problém, ale velice dlouhý vzorec je pro mě nepřehledný. Raději výpočet provede na několik kroků.
Psaní komentářů je neocenitelné. Většinou zjistíte po delším čase, kdy se k aplikaci vrátíte. Po roce otevřete program a marně budete vzpomínat, co tak konstrukce dělá. Popis funkce příkazu If then je zbytečný, ale co je jeho cílem už ne.
Další problém je Excel a jeho práce s časem a datem 11/1/2011 představuje 1. listopad 2011, 1/11/2011 je 11. Leden 2011, ale 13/1/2011 a 1/13/2011 je 13. Ledna 2011. Takže doporučuji používat DateSerial. Kde je jasné, co je rok, měsíc a den. Nenechat to na Excelu ať odhaduje a myslí za uživatele nedoporučuji. Lze použít jednoduše +1 například u měsíce.
DaDalší problematická záležitost. Člověk zapomene zapnout zobrazování chybových hlášek, přitom skript nefunguje, ale Excel nic nehlásí neboť to má zakázané (tato chyba se také špatně hledá).
Další nepříjemná vlastnost například u cyklů při počítání s malými čísly. U čítačů ochranná funkce.
Pozor pole v Excelu jsou počítána od nuly, pokud nic neuvedete. Nepoužívejte Option Base 1. Sice se Vám bude zdát, že počítání od jedné je logičtější, ale přinese to problémy. Pokud část kódu přenesete a zapomenete, zapnout chybu budete hledat dlouho, hodně dlouho. Raději deklarujte Dim MojePole (1 To 8) As Double
Dobrým nápadem, jež jsem nalezl na internetu, je hledat poslední řádek od konce tabulky.
Nejprve zkontrolovat.
Příklad: Pokud otvíráte nový sešit, zkontrolujte, zda existuje. Opět předejdete problémům.
Opět se může stát, že objekt má nastavenou jinou výchozí vlastnost než předpokládáte.
Jak už jsem psal Excel „zaokrouhluje“ proto při tvorbě čítačů je vhodné jej doplnit o ochranu. i = i + 0,0001
Ujednotit si popis konstant proměnných ovládacích prvků. TextBox1, TextBox2 moc toho neřeknou, ale TxBoxJmeno, TxBoxPrijmeni už řekne. V popisu doporučuji nepoužívat diakritiku.
V komentářích můžete uvést své poznatky s psaním VBA kódu. Na co si dávat pozor, atd.
Článek byl aktualizován: 19.09.2020 11:06
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Přidáno: 23.11.15 08:36
Dobrý den, moc dobrý web a informace ohledně MS Excel. Programování v MS Excelu a MS Access se věnuji od roku 2001. To co píšete je jedině pravda. Je vidět, že víte co píšete. V poslední době jsem se věnoval použití ActiveX prvku StrokeScribe Control - používání čarových nebo QR kódů. Výborná věc pro databázové projekty, např. evidence objednávek a přijetí mat. na sklad apod. Potřeboval bych vědět něco blíže o aplikaci RunTime v MS Access. Jde o to, že vytvořený projekt lze pak spustit i na PC kde Access není nainstalován. Děkuji za odpověď lysek.p@seznam.cz 724 111 711
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |