Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba » excel-vba-jak-na-aplikace

VBA Excel – jak na aplikace

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Doplňované postřehy s psaní aplikací v Excel VBA

Úvodem

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.

1) Správná struktura a návrh

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í.

Co si tedy rozmyslet

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í).

Například vhodná struktura aplikace:

  • Viditelné listy
    • Úvodní list – obsahuje název, nějaké menu
    • Vstupní list – kde bude uživatel zadávat nějaká data
    • Výstupní list – kde uživatel obdrží výpočty
  • Neviditelné listy
    • List s nastavením aplikace (jazyková verze, platnost, ...)
    • List s výpočty
    • Pomocný list

2) Grafika

Design prodává.

Jak má vypadat graficky aplikace je na samostatný článek, alespoň pár postřehů.

Moje doporučení

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

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.

3) Práce s listy

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.

4) Vzorce

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ů.

5) Komentáře v kódu VBA

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.

6) Datum a čas

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.

7) Vypínaní zobrazování chybových hlášek

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á).

8) Zaokrouhlování v Excelu

Další nepříjemná vlastnost například u cyklů při počítání s malými čísly. U čítačů ochranná funkce.

9) Vlastní pole

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

10) Odčítat od poslední buňky

Dobrým nápadem, jež jsem nalezl na internetu, je hledat poslední řádek od konce tabulky.

11) Existuje objekt

Nejprve zkontrolovat.

Příklad: Pokud otvíráte nový sešit, zkontrolujte, zda existuje. Opět předejdete problémům.

12) Otestujte výchozí vlastnost objektu

Opět se může stát, že objekt má nastavenou jinou výchozí vlastnost než předpokládáte.

13) Cykly s ochranným čítačem

Jak už jsem psal Excel „zaokrouhluje“ proto při tvorbě čítačů je vhodné jej doplnit o ochranu. i = i + 0,0001

14) Jednotný popis prvku

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.

Závěrem

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

Odměna

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.


Pavel Lasák - autor webu

Pavel Lasák

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ů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


Přemysl Lýsek

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






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

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 |