Jak můžete identifikovat a zvládnout každou možnou chybu v Excelu 2016? Často nemůžete. Naštěstí VBA poskytuje další způsob, jak se s těmito otravnými chybami vypořádat.
Opětovná návštěva procedury EnterSquareRoot
Prozkoumejte následující kód. Rutina používá víceúčelový příkaz On Error k zachycení všech chyb a poté ke kontrole, zda byl InputBox zrušen.
Sub EnterSquareRoot5()
Dim Num jako varianta
Dim Msg As String
' Nastavte zpracování chyb
Při chybě GoTo BadEntry
' Dotázat se na hodnotu
Num = InputBox(“Zadejte hodnotu”)
V případě zrušení ukončete
If Num = „“ Pak Exit Sub
' Vložte druhou odmocninu
ActiveCell.Value = Sqr (Num)
Exit Sub
BadEntry:
Msg = "Došlo k chybě." & vbNewLine & vbNewLine
Msg = Msg & „Ujistěte se, že je vybrán rozsah,“
Msg = Msg & „list není chráněn,“
Msg = Msg & "a zadáte nezápornou hodnotu."
MsgBox Msg, vbCritical
End Sub
Tato rutina zachycuje jakýkoli typ chyby běhu. Po zachycení chyby runtime zobrazí revidovaná procedura EnterSquareRoot toto okno se zprávou. Toto okno se zprávou popisuje nejpravděpodobnější příčiny chyby.
Chyba za běhu v proceduře generuje tuto částečně užitečnou chybovou zprávu.
On Chyba nefunguje?
Pokud příkaz On Error nefunguje tak, jak je inzerováno, musíte změnit jedno ze svých nastavení:
Aktivujte VBE.
Zvolte příkaz Nástroje → Možnosti.
Klepněte na kartu Obecné v dialogovém okně Možnosti.
Ujistěte se, že není vybráno nastavení Break on All Errors.
Pokud je toto nastavení vybráno, Excel v podstatě ignoruje všechny příkazy On Error. Normálně chcete ponechat možnosti Zachycování chyb nastavené na Přerušit při neošetřených chybách.
O prohlášení On Error
Použití příkazu On Error v kódu VBA vám umožní obejít integrované zpracování chyb aplikace Excel a použít vlastní kód pro zpracování chyb. V předchozím příkladu chyba běhu způsobí, že spuštění makra skočí na příkaz označený BadEntry. V důsledku toho se vyhnete nepřátelským chybovým zprávám aplikace Excel a můžete uživateli zobrazit vlastní zprávu.
Všimněte si, že příklad používá příkaz Exit Sub těsně před štítkem BadEntry. Toto tvrzení je nutné, protože nechcete spustit kód zpracování chyb, pokud se chyba není dojít.