Akce VBA | Jak a kdy použít funkci DoEvents?
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.
Tuto šablonu aplikace VBA DoEvents Excel si můžete stáhnout zde - Šablona aplikace VBA DoEvents ExcelNapříklad se podívejte 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 kód běží, 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, bude kód vba rychlý a umožní nám spadnout, že uvedená úloha běží sama pro sebe.
- Jedním z nebezpečí funkce DoEvents je to, že když přepínáme listy nebo sešity, přepíše hodnoty aktivního listu.
- Dalším nebezpečím je, že pokud do buňky zadáme jakoukoli hodnotu, spuštění kódu se zastaví a ani nás neoznámí.