Jdi na obsah Jdi na menu
Reklama
Založte webové stránky zdarma - eStránky.cz
 


Call Stack – Hidden code

14. 1. 2009

Při práci na větších projektech používám s výhodou komponentu Call Stack. Už jsem si zvyknul na text "[<Non-Basic Code>]", který jak předpokládam, je volán z jádra aplikace při otevírání sešitů, provádění události apod. Vzhledem k tomu, že office aplikace jsou napsány v jazyku "C", bude to zřejmě tento kód, který je vyvolán aby obstaral vše potřebné,

Non-BasicCode

Při práci na jedné aplikaci jsem se setkal s jevem, který jsem zatím nepozoroval. Kod exportoval listy z jednoho sešitu do druhého a mazal listy, které už tam byly abych měl zaručenou nejnovější verzi. Kod vypadal nějak takto

For Each o_Wks In o_WkbMain.Sheets
    o_WkbSlave.Sheets(o_Wks.Name).Delete
    o_WkbMain.Sheets(o_Wks.Name).copy o_WkbSlave.Sheets(1)
Next o_Wks


Listy se kopírovaly čtyři. U prvních třech nebyl žádný problém, u posledního se pravidelně stávalo, že se kód "zasekl" na řádku s kopírováním a musel jsem vícekrát krokovat než kód proběhl. Stejný jev nastal při zavírání sešitu kde byly listy překopírovany. V okně Call Stack se objevil nápis "[<Hidenn Code>]"

Hidden_Code

Samozřejmě se mi toto chování nelíbilo a hledal jsem příčinu. Vyzkoušel jsem metodu DoEvents aby systém měl možnost provést své úkoly a tím jsem předpokládal, že zmizí z Call Stack onen popisek. Ovšem mýlil jsem se. Příčinou tohoto chování jsou událostní procedury v ThisWorkbook. Podle toho kolik procedur je v této sekci uloženo, tolikrát musíte "zbytečně" krokovat nad jedním příkazem. Jak asi tušíte, jedná se o událostní procedury a příkaz pro zákaz vykonávaní události v celé aplikaci je následujicí

Application.EnableEvents = False

a samozřejmě jsem události, po provedení příkazu opět zapnul. Tento postup se ukázal jako lék na nevšední problém. Kód se již více "nezasekával" a z okna Call Stack zmizel text "[<Hidenn Code>]".

 

Komentáře

Přidat komentář

Přehled komentářů

Zatím nebyl vložen žádný komentář