Články > Ako zrýchliť makro VBA

Rýchlosť makra v Exceli

Existuje niekoľko jednoduchých trikov pre zrýchlenie makra VBA. Paradoxne, veľa ľudí na tieto výborné funkcie VBA zabúda, alebo o nich vôbec nevie. Tu sú tri základné funkcie, ktoré by ste mali používať:

  • Application.ScreenUpdating
  • Application.Calculation
  • Application.DisplayAlerts

Čo znamenajú? ScreenUpdating obsluhuje prekresľovanie obrazovky. Napríklad pri zmene údajov, prepínaní hárkov a podobne. Pavdepodobne je to najviac používaná "zrýchľovacia" funkcia. A to nielen v Exceli. Funkcia Calculation obsluhuje prepočet dát na úrovni objektu. DisplayAlerts ovláda rôzne hlásenia a správy o aktuálnej činnosti aplikácie. Jednoduché.

Keď niečo vypnete, treba to aj znova zapnúť. Takže ak použijeme funkciu ScreenUpdating pre vypnutie prekreslenia obrazovky príkazom FALSE, po vykonaní potrebného kódu ju znova zapneme príkazom TRUE.

kód VBA funkcie Application ScreenUpdating

PRIPRAVTE SI METÓDU PUBLIC SUB

Odporúčam pripraviť si do samostatného modulu dve verejné metódy SUB, ktoré budú obsluhovať toto vypínanie. Potom iba stačí volať tieto Public Sub metódy podľa potreby príkazom Call VypnutEventy a Call ZapnutEventy.

verejný public sub kód vba

Vyborné vysvetlenie nájdete na stránke blogu Office.

ÚČINOK ZRÝCHLENIA MAKRA

V priloženom excelovom zošite máme hárok, v ktorom dve makrá naplnia tabuľku 20 stĺpcov a 20000 riadkov. Spolu 400000 hodnôt. Ako databáza je to malá tabuľka :). Bez vypnutia týchto funkcií je celkový čas makra na mojom počítači priemerne 11,5 sekundy. S vypnutím týchto funkcií sa vykoná makro priemerne za 8,2 sekundy. To je celkom dobrý rozdiel 3 sekúnd pri takom rozsahu údajov, iba s použitím týchto funkcií.

Toto je malý príklad, aké funkcie používať pri programovaní makier VBA pre zrýchlenie kódu. V zošite, kde by bolo veľa výpočtov, veľa makier vykonávajúcich rôzne operácie kopírovania a čítania dát, takéto funkcie výrazne zrýchlia vykonávanie makra. A tým aj užívateľský pocit z dobre fungujúcej aplikácie.

RÝCHLO, RÝCHLEJŠIE...

Nestačí toto zrýchlenie? Prečítajte si návod ako využiť dynamické pole napríklad pri kopírovaní veľkého objemu dát.

Kvalitné informácie nielen o tejto problematike nájdete aj na dobrej českej webstránke zrychlení kódu ve VBA pána Pavla Lasáka.