dnes je 5.12.2022

Input:

Excel 2007: Makra — VBA — Ladění programu – 6. část

22.6.2011, , Zdroj: Verlag Dashöfer

V předcházejících článcích jsme si vytvořili příklad, na kterém jsme se začali seznamovat s ladícími prostředky VBE. Dnes probereme „Set Next statement“ a „Show Next statement“. Kromě nich si ještě něco doplníme k příkazu DEBUG.

Podkladová úloha: V 1. části jsme sestrojili makro, které ladíme. Zvolili jsme si jednoduchou úlohu, kde na listu jsou řádky, a pokud se v kterékoli buňce v řádku objeví slovo „Celkem“, buňku v tomto řádku a sloupci naformátujeme tučnou červenou kurzívou. A naopak, pokud nikde „Celkem“ nebude, makro zajistilo, aby nebyla ani tučně ani kurzívou, a byla černě.

Stáhněte si sešit 2011-13 Ladeni_programu.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:

Minule jsme ovládli příkaz Watch.  Ve chvíli, kdy přerušíme běh programu, abychom se podrobněji podívali, co se děje jinak, než očekáváme, objeví se žlutá šipka, která ukazuje na řádek, v němž se má provést další instrukce, až k tomu dáme pokyn (např. stiskem <F8>).

Upravíme si kód uměle tak, aby se nevešel na jednu obrazovku:

Nyní si nastavíme BreakPoint někam do hlavní rutiny a spustíme, aby se běh makra zastavil na BreakPointu:

Řekněme, že nás teď napadne podívat se do kódu Funkce ZjistiCelkem, jestli tam nemáme nějakou chybu. Je to celkem při ladění běžná situace, kdy se musíme z místa přerušení vzdálit, a podívat se někam jinam. Mohlo by to vypadat takto:

Poté, co jsme se podívali, chceme zpátky ke žluté šipce. Máme dvě možnosti, jak se k ní dostat. První je, že si to nějak sami zapamatujeme, a místo v programu najdeme. Druhá možnost je přes ShowNextStatement:

Jakmile tento příkaz provedeme, vrátí se obrazovka do takové polohy, kdy vidíme žlutou šipku.

Tento příkaz je neobyčejně užitečný, protože ve chvíli, kdy máme více modulů s více subroutinami, mezi nimiž se přepínáme při hledání chyb, snadno se stane, že se „ztratíme“. Je to taková tísňová linka v bludišti.

Teď vás bude přirozeně zajímat, jak je užitečný příkaz SetNextStatement.

Je to rovněž výhodné pro kódy, které se nevejdou na jednu obrazovku. Pokud totiž chceme spustit další krok někde, kde to na obrazovce vidíme, a současně je vidět žlutá šipka, stačí přetáhnout tu žlutou šipku myší na nové místo, a dát <F8>. Co však

Nahrávám...
Nahrávám...