V předchozím článku jsme si vytvořili příklad, na kterém se blíže seznámíme s ladícími prostředky VBE. Dnes začneme tento nesmírně důležitý nástroj zkoumat podrobněji.
Podkladová úloha: Minule jsme strojili makro, které budeme ladit. Zvolili jsme si jednoduchou úlohu, kde na listu jsou řádky, a pokud se v kterékoli buňce v řádku objeví slovo „Celkem“, tak buňku v tomto řádku a sloupci naformátujeme tučnou červenou kurzívou. A naopak, pokud tam nikde „Celkem“ nebude, makro zajistilo, aby nebyla ani tučně ani kurzívou, a byla černě.
Stáhněte si sešit 2011-9 Ladeni_programu.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
Makro vypadá takto. Viz obrázek:
Postavíme se do Excelu selektorem na buňku C1 a provedeme krokované spuštění makra. Viz obrázek:
Před stiskem tlačítka „Krokovat s vnořením“ vybereme makro „MD_Celkem.Procházej_radky“, které je na předchozím obrázku červeně orámováno.
Pokud se Vám zobrazila i další makra, a seznam nabízených maker je nepřehledný, zvolte v dialogovém okně „Makro“ v rámečku „Makra v“ nikoli „Všechny otevřené sešity“, ale pouze „Tento sešit“, jak je vidět na předchozím obrázku.
Program přejde do VBE a zastaví se na první instrukci:
Všimněte si, že nahoře vpravo je v rámečku uvedeno makro, které bylo vyvoláno a první instrukce je žlutě zvýrazněna. V levém pruhu je umístěna žlutá šipka.
Nyní se seznámíme s krokovacími možnostmi. Myší klepněte na menu „Debug“ nahoře a uvidíte toto:
Pro rozumné ladění je téměř nevyhnutelné se naučit zpaměti klávesové zkratky v seznamu uvedené:
F8 – proveď instrukci, na niž ukazuje žlutá šipka, a přejdi o krok dál
Shift+F8 – proveď instrukci, na níž ukazuje šipka, a pokud je součástí instrukce vyvolání podprogramu, neukazuj podrobnosti krokování v tomto podprogramu. Místo toho přejdi na další instrukci v tom programu, který se zobrazuje v rámečku nahoře.
Ctrl+Shift+F8 – pokud ses nechtěně dostal v krokování do podprogramu, a nechceš se zdržovat krokováním zde, tak touto klávesovou zkratkou se dostaneš na stejné místo, jako bys předtím stiskl <Shift+F8>.
Ctrl+F8 – pokud si předem nastavíš kurzor na některý řádek níže – např. po průchodu nějakým cyklem, který by se prováděl mockrát, a tebe by to unavovalo, můžeš se rychle přesunout v běhu programu až před provedení instrukce, na jejímž řádku kurzor stojí.
Další položky z menu Debug si ponecháme na později. Nyní se pustíme do krokování programu tak, že budeme opakovaně tisknout <F8>. Všimněte si, že žlutá šipka se zastavuje jen na instrukcích, které za chodu něco dělají. Tedy přeskakuje instrukce Dim a komentáře.
Žlutá šipka se zastavila před instrukcí „Range("A1").Select“. Než ji provedete, ujistěte se pohledem do Excelu, že je selektor stále ještě na buňce „C1“. Pak se vraťte do VBE,…