Funkce DoEvents aplikace Excel VBA
S pomocí VBA DoEvents dokážeme kód spustit na pozadí a současně nám umožní pracovat také s Excelem a dalším aplikačním softwarem. DoEvents nám nejen umožňuje pracovat s jiným softwarem, ale můžeme také přerušit běh kódu.
Funkce DoEvents předává kontrolu operačnímu systému počítače, na kterém pracujeme.

Jak používat funkci DoEvents?
Když je požadavek obrovský, je vyžadováno velké množství kódu VBA. V takových případech aplikace Excel nějakou dobu visí a zastaví se a někdy dokonce přestane reagovat.
Podívejte se například na níže uvedený kód.
Kód:
Sub DoEvents_Example1 () Dim i As Long For i = 1 To 100000 Range ("A1"). Value = i Next i End Sub

Výše uvedený kód vloží sériová čísla od 1 do 100 000. Provedení úkolu bude snadno trvat déle než minutu. Během provádění aplikace Excel po značnou dobu visí na dokončení úkolu. Během této doby aplikace Excel zobrazí zprávu jako „Excel neodpovídá“.

Navíc nemůžeme přistupovat k listu, na kterém pracujeme. To je frustrující věc, jak tedy zajistíme, aby byl list aplikace Excel k dispozici pro práci, zatímco kód běží za obrazovkou.
Toho lze dosáhnout přidáním funkce VBA DoEvents .
Kód:
Sub DoEvents_Example1 () Dim i As Long For i = 1 To 100000 Range ("A1"). Value = i DoEvents Next i End Sub

V okamžiku, kdy do kódu přidáme funkci DoEvents, můžeme přistupovat k listu aplikace Excel.

Z výše uvedeného vidíme, že je kód spuštěn, ale můžeme přistupovat k listu.
Přerušte spuštěný kód
Když kód běží za obrazovkou, můžeme přidávat řádky, sloupce a mazat stejné, můžeme přejmenovat list a můžeme dělat i mnoho dalších věcí. V okamžiku, kdy přidáme DoEvents, rychle se spustí kód VBA a umožní nám padnout, že zmíněná úloha běží sama pro sebe.
- Jedním z nebezpečí funkce DoEvents je, když přepínáme listy nebo sešity a přepíše hodnoty aktivního listu.
- Dalším nebezpečím je, když do buňky zadáme jakoukoli hodnotu, spuštění kódu se zastaví a ani nás to neoznámí.