Hogyan azonosíthatja és kezelheti az összes lehetséges hibát az Excel 2016-ban? Gyakran nem lehet. Szerencsére a VBA egy másik módszert kínál a bosszantó hibák kezelésére.
Az EnterSquareRoot eljárás újbóli megtekintése
Vizsgálja meg a következő kódot. A rutin egy univerzális On Error utasítást használ az összes hiba rögzítésére, majd ellenőrzi, hogy az InputBox törölve lett-e.
Sub EnterSquareRoot5()
Dim Num As Variant
Dim Msg As String
' Állítsa be a hibakezelést
Hiba esetén GoTo BadEntry
' Érték kérése
Num = InputBox ("Adjon meg egy értéket")
Lemondás esetén lépjen ki
Ha Num = "" Akkor lépjen ki a Sub
' Illessze be a négyzetgyököt
ActiveCell.Value = Sqr(szám)
Exit Sub
BadEntry:
Msg = "Hiba történt." & vbNewLine & vbNewLine
Msg = Üzenet & "Győződjön meg arról, hogy egy tartomány van kiválasztva, "
Msg = Üzenet & "a lap nem védett, "
Msg = Msg & "és megad egy nemnegatív értéket."
MsgBox Msg, vbCritical
Vége Sub
Ez a rutin bármilyen típusú futásidejű hibát csapdába ejt . A futásidejű hiba észlelése után a felülvizsgált EnterSquareRoot eljárás ezt az üzenetmezőt jeleníti meg. Ez az üzenetmező a hiba legvalószínűbb okait írja le.

Az eljárás futásidejű hibája ezt a félig hasznos hibaüzenetet generálja.
Hiba nem működik?
Ha az On Error nyilatkozat nem a hirdetett módon működik, módosítania kell az egyik beállítást:
Aktiválja a VBE-t.
Válassza az Eszközök → Beállítások parancsot.
Kattintson a Beállítások párbeszédpanel Általános fülére.
Győződjön meg arról, hogy a Break on All Errors beállítás nincs kijelölve.
Ha ezt a beállítást választja, az Excel lényegében figyelmen kívül hagy minden On Error utasítást. Általában a Hibacsapdás beállításokat a Kezeletlen hibák megszakítása értékre kell állítani.
Az On Error nyilatkozatról
Az On Error utasítás használatával a VBA-kódban megkerülheti az Excel beépített hibakezelését, és saját hibakezelő kódját használhatja. Az előző példában egy futásidejű hiba miatt a makró végrehajtása a BadEntry feliratú utasításra ugrik. Ennek köszönhetően elkerülheti az Excel barátságtalan hibaüzeneteit, és saját üzenetet jeleníthet meg a felhasználónak.
Figyelje meg, hogy a példa egy Exit Sub utasítást használ közvetlenül a BadEntry címke előtt. Erre az utasításra azért van szükség, mert nem akarja végrehajtani a hibakezelő kódot, ha nem történik hiba .