VBA-index a tartományon kívül (Run-Time Error '9') - Miért fordul elő ez a hiba?

Excel VBA-index a tartományon kívül

A tartományon kívül eső index olyan hiba, amelyet a VBA-ban tapasztalunk, amikor megpróbálunk hivatkozni valamire vagy egy olyan változóra, amely nem létezik egy kódban, tegyük fel például, hogy nincs x nevű változónk, de az msgbox függvényt használjuk az x-en tartományon kívüli indexekkel fog találkozni.

A VBA Subscript tartományon kívüli hibája azért fordul elő, mert az objektum, amelyhez megpróbálunk hozzáférni, nem létezik. Ez egy hibatípus a VBA kódolásban, és ez egy „Run Time Error 9”. Fontos megérteni a hatékony kódírás fogalmait, és még fontosabb megérteni a VBA-kód hibáját a kód hatékony hibakeresése érdekében.

Ha a kódolási hiba, és nem tudja, mi ez a hiba, amikor elment.

Az orvos nem adhat gyógyszert a betegének anélkül, hogy tudná, mi a betegség. Az biztos, hogy az orvosok és a betegek is tudják, hogy van betegség (hiba), de fontos megérteni a betegséget (hibát), mint gyógyszert adni hozzá. Ha tökéletesen megérti a hibát, akkor sokkal könnyebb megtalálni a megoldást.

A cikk hasonló megjegyzésében látni fogjuk az egyik fontos hibát, amellyel rendszerint rendszerességgel találkozunk, vagyis az „Excel alá eső index” tartományon kívüli hibát.

Mi az Alaptartomány tartományon kívüli hiba az Excel VBA-ban?

Például, ha a munkalapot nem tartalmazó munkalapra hivatkozik, akkor a 9. futási hibát kapjuk : „Az alsó index tartományon kívül van.”

Ha a Befejezés gombra kattint, akkor az alfolyamat befejeződik, ha a hibakeresés gombra kattint, akkor a kódsorra kerül, ahol hibát észlelt, és a segítség a Microsoft webhelyére mutat.

Miért történik a tartományon kívüli index index hiba?

Mint orvosként elmondtam, fontos megtalálni az elhunytat, mielőtt a gyógyszerre gondolnék. A VBA Subscript tartományon kívüli hibája akkor fordul elő, amikor a kódsor nem olvassa el a beírt objektumot.

Nézze meg például az alábbi képet. Három lapom van, Sheet1, Sheet2, Sheet3.

Most a kódba beírtam a kódot az „Értékesítés” lap kiválasztásához.

Kód:

Sub Macro2 () Sheets ("Értékesítés"). Válassza az End Sub lehetőséget

Ha ezt a kódot az F5 billentyűvel vagy manuálisan futtatom, akkor a 9. futási hibát kapom : „Alcím kívül esik a tartományon”.

Ennek oka az volt, hogy megpróbáltam elérni a „Sales” munkalap objektumot, amely nem létezik a munkafüzetben. Ez egy futási hiba, mert ez a hiba a kód futtatása közben történt.

Egy másik gyakori index-hiba, amikor a nem létező munkafüzetre hivatkozunk. Nézze meg például az alábbi kódot.

Kód:

1. makró1 () Dim Wb mint munkafüzetkészlet Wb = munkafüzetek ("Fizetési lap.xlsx") Vége alrész

A fenti kód szerint a WB változónak meg kell egyeznie a „Fizetési lap.xlsx” munkafüzettel. Mostantól ez a munkafüzet nem nyílik meg a számítógépemen. Ha manuálisan vagy az F5 kulcson futtatom ezt a kódot, akkor a 9. futási hibát kapom : „Az index az tartományon kívül van.”

Ez annak a munkafüzetnek köszönhető, amelyre hivatkozom, amely vagy jelenleg nincs nyitva, vagy egyáltalán nem létezik.

VBA-index hiba a tömbökben

Amikor a tömböt dinamikus tömbnek nyilvánítja, és ha nem a DIM vagy a REDIM szót használja a VBA-ban egy tömb hosszának meghatározásához, akkor általában a VBA Subscript tartományon kívüli hibát kapunk. Nézze meg például az alábbi kódot.

Kód:

Sub Macro3 () Dim MyArray () As Long MyArray (1) = 25 End Sub

A fentiekben deklaráltam a változót tömbként, de nem rendeltem kiinduló és végpontot; inkább az első tömböt rendeltem 25-re.

Ha ezt a kódot az F5 billentyűvel vagy manuálisan futtatom, akkor a 9. futási hibát kapjuk : „Az index az tartományon kívül van.”

A probléma megoldásához ki kell jelölnöm egy tömb hosszát a Redim szó használatával.

Kód:

Sub Macro3 () Dim MyArray () Amíg ReDim MyArray (1–5) MyArray (1) = 25 End Sub

Ez a kód nem ad hibát.

Hogyan lehet hibákat megjeleníteni a VBA kód végén?

Ha nem akarja látni a hibát, amíg a kód fut és fut, de a végén hibalistára van szüksége, akkor a „On Error Resume” hibakezelőt kell használnia. Nézze meg az alábbi kódot.

Kód:

1. makró1 () Dim Wb mint munkafüzet a hibáról Folytatás Következő készlet Wb = Munkafüzetek ("Fizetési lap.xlsx") MsgBox Err.Description End Sub

Mint láttuk, ez a kód dobja a 9. futási hibát: „Az index az tartományon kívül esik az Excel VBA-ban . De a kód futtatása közben a hibakezelőt kell használnom az On Error Resume Next alkalmazásban a VBA-ban. Nem kapunk hibaüzeneteket. Inkább a végén az üzenetmező mutatja az ilyen hibaleírást.

Az Excel VBA Subscript of Range Range sablonját itt töltheti le: - VBA Subscript Out Range Range sablon

érdekes cikkek...