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

Jste zde: Úvodní stránka » excel » vba-triky » zrychleni-kodu-vba-excel

Zrychlení kódu ve VBA - Excel

Videokurzy Excel

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

Jak zrychlit provádění VBA kódu v Excelovských aplikacích

Úvodem

Po vytvoření aplikace ve VBA a naplnění skutečnými daty zjistíte, že práce s výpočtem trvá dlouho. Oproti testovacímu balíčku (kdy jste neměli tolik dat). Většinou to nevadí. Pár minut za které se požadované úkony provedou automaticky, oproti několika dnům, kdyby se výpočet prováděl ručně nevadí. Pokud přesto chcete zrychlit v článku proberu několik možností.

Application.ScreenUpdating

Výpočet provádějte na pozadí bez obnovování obrazovky.

Ukázkou rychlosti provedení zápisu číselné řady v listu s názvem 1. Nápad jsem si vypůjčil z http://www.vbforums.com/. Neřeším optimalizaci vnitřního kódu.

For i = 1 To 1000 Worksheets("1").Range("A1").Offset(i, 0).Value = i Worksheets("1").Range("A1").Offset(i, 0).Activate Next i

Poznámka: Tento kód je uveden jen pro demonstraci provedení rychlosti při (ne)použití Application.ScreenUpdating.

Kód doplněný o Application.ScreenUpdating:

Application.ScreenUpdating = False For i = 1 To 1000 Worksheets("1").Range("A1").Offset(i, 0).Value = i Worksheets("1").Range("A1").Offset(i, 0).Activate Next i Application.ScreenUpdating = True

Rychlost provedení bude znatelně rychlejší ;)

Application.Calculation

Pokud není potřeba výpořet proveďte na konci

Nema-li změna buněk vliv na výpočet, případně nepotřebujete-li průběžně při změně v listu provádět výpočet, lze automaticky přepočet vypnout.

Application.Calculation = xlCalculationManual

Na konci makra (VBA) nezapomenout opět zapnout.

Application.Calculation = xlCalculationAutomatic

Application.DisplayAlerts

Nezobrazovat chybové hlášky.

Vypneme zobrazování dialogových a potvrzovacích oken, které se v průběhu práce makra mohou vyskytnout (například potvrzení při ukládání souboru, odstraňování listu, atd.). Pokud to máte v programu dobře ošetřené nemusíte tyto hlášky zbytečně zobrazovat. Vypnutí se provede jednoduše:

Application.DisplayAlerts = False

Před ukončením, či v místech kde je potřeba zobrazování opět zapnete:

Application.DisplayAlerts = True

Vyplňování buněk

Odkazujte se efektivně.

V jedné knize jsem četl poučku čím méně "teček" VBA prochází tím je rychlejší. Jednak si tuto poučku zapamatoval. Využitím této myšlenky se snažím výsledne kódy optimalizovat. O co jde. Odkazujete se na danou buňku v listě takto:

Workbooks("muj-sesit.xlsm").Sheets("List22").Range("A1")

Kód obsahuje dvě tečky. Teď ho doplníme ať se na prvních 99 řádku napíše text: pomalý kód. Provedeme v cyklu jako nevhodné pomalé řešení:

For i = 1 to 99 Workbooks("muj-sesit.xlsm").Sheets("List22").Range("A1").offset(i-1) = "pomalý kód" Next

Kód obsahuje tři tečky. Pro 99 řádku je to 297 teček. Takže pomalý. Když kód upravíme takž že oblast dáme do proměnné.

Set MojePromena = Workbooks("muj-sesit.xlsm").Sheets("List22").Range("A1") For i = 1 to 99 MojePromena.offset(i-1) = "rychlý kód" Next

Již máme 101 teček a tím pádem i rychlejší kód.

Závěrem

Další možnosti zrychlení VBA budu do článku přidávat průběžně. Máte-li k dispozici kód co lépe může demonstrovat rychlost, budu rád přidáte-li do komentářů.

Článek byl aktualizován: 19.09.2020 11:07

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

" ; // echo "kompletni_cesta :" ; // echo $adresar_pro_vkladani ; // echo "
" ; // echo " Tady bude možnost přidání komentáře" ; // echo "
" ; // echo "
" ; $kompletni_cesta = "komentare"; $adresar_pro_vkladani = $kompletni_cesta; ?> \n"; reset($polozky); while (list($key, $val) = each($polozky)) { if ($val != "." && $val != "..") { if (!is_dir($val)) { // echo "$val
\n"; $fp = FOpen ($adresar_pro_vkladani."/".$val, "r"); //otevře soubor book.dat pro čtení $data = FRead ($fp, FileSize($adresar_pro_vkladani."/".$val)); //přečte data ze souboru a uloží do proměnné "data" - kvůli tomu aby se zobrazoval poslední příspěvek nahoře FClose($fp); echo "$data"; } } } ?>





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 - 2020 |