Dolní index VBA mimo rozsah (chyba běhu '9') - Proč k této chybě dochází?

Dolní index Excel VBA je mimo rozsah

Dolní index mimo rozsah je chyba, se kterou se setkáváme ve VBA, když se pokoušíme odkazovat na něco nebo na proměnnou, která v kódu neexistuje, například předpokládejme, že nemáme proměnnou s názvem x, ale na x použijeme funkci msgbox narazí na dolní index chyby mimo rozsah.

Došlo k chybě VBA Subscript out of range, protože objekt, ke kterému se snažíme získat přístup, neexistuje. Toto je typ chyby v kódování VBA a toto je „Chyba doby běhu 9“. Je důležité porozumět konceptům psaní efektivního kódu a ještě důležitější je porozumět chybě vašeho kódu VBA, abyste mohli efektivně ladit kód.

Pokud je vaše chyba v kódování a nevíte, co je to za chybu, když jste pryč.

Lékař nemůže dát pacientovi lék, aniž by věděl, o jakou nemoc jde. Lékaři i pacienti jistě vědí, že existuje nemoc (chyba), ale je důležité této nemoci (chybě) porozumět, než ji léčit. Pokud této chybě dokonale rozumíte, je mnohem jednodušší najít řešení.

V podobné poznámce v tomto článku uvidíme jednu z důležitých chyb, se kterými se obvykle setkáváme s pravidelností, tj. Chyba „Dolní index mimo rozsah“ v aplikaci Excel VBA.

Co je chyba indexu mimo rozsah v aplikaci Excel VBA?

Například pokud odkazujete na list, který tam sešit není, pak se nám zobrazí chyba běhu 9: „Dolní index mimo rozsah.“

Pokud kliknete na tlačítko Konec, ukončí se podproces, pokud kliknete na ladění, dostanete se na řádek kódu, kde došlo k chybě, a nápověda vás přenese na webovou stránku společnosti Microsoft.

Proč dochází k chybě indexu mimo rozsah?

Jak jsem řekl jako lékař, je důležité najít zesnulého, než přemýšlím o léku. Chyba dolního indexu VBA mimo rozsah nastane, když řádek kódu nečte objekt, který jsme zadali.

Podívejte se například na obrázek níže. Mám tři listy s názvem List1, List2, List3.

Nyní v kódu jsem napsal kód pro výběr listu „Prodej“.

Kód:

Sub Macro2 () Sheets ("Sales"). Vyberte End Sub

Pokud spustím tento kód pomocí klávesy F5 nebo ručně, skončím s chybou běhu 9: „Dolní index mimo rozsah.“

Je to proto, že jsem se pokusil o přístup k objektu listu „Prodej“, který v sešitu neexistuje. Toto je chyba za běhu, protože k této chybě došlo při spuštění kódu.

Další běžnou chybou dolního indexu, kterou dostáváme, je odkaz na sešit, který tam není. Podívejte se například na níže uvedený kód.

Kód:

Sub Macro1 () Dim Wb As Setbook Set Wb = Workbooks ("Salary Sheet.xlsx") End Sub

Výše uvedený kód říká, že proměnná WB by se měla rovnat sešitu „Plat Sheet.xlsx“. Od této chvíle není tento sešit otevřen v mém počítači. Pokud tento kód spustím ručně nebo pomocí klávesy F5, zobrazí se chyba běhu 9: „Dolní index mimo rozsah.“

Je to kvůli sešitu, na který odkazuji, který buď není nyní otevřený, nebo vůbec neexistuje.

Chyba dolního indexu VBA v polích

Když deklarujete pole jako dynamické pole a pokud nepoužíváte slovo DIM nebo REDIM ve VBA k definování délky pole, obvykle dostaneme VBA index mimo chybu rozsahu. Podívejte se například na níže uvedený kód.

Kód:

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

Ve výše uvedeném jsem deklaroval proměnnou jako pole, ale nepřiřadil jsem počáteční a koncový bod; spíše jsem hned přiřadil prvnímu poli hodnotu 25.

Pokud spustím tento kód pomocí klávesy F5 nebo ručně, dostaneme chybu běhu 9: „Dolní index mimo rozsah.“

Chcete-li tento problém vyřešit, musím přiřadit délku pole pomocí slova Redim.

Kód:

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

Tento kód nedává žádné chyby.

Jak zobrazit chyby na konci kódu VBA?

Pokud nechcete vidět chybu, když je kód v provozu, ale potřebujete seznam chyb na konci, musíte použít obslužnou rutinu chyb „Při obnovení chyb“. Podívejte se na níže uvedený kód.

Kód:

Sub Macro1 () Dim Wb As Workbook on Error Resume Next Set Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Popis End Sub

Jak jsme viděli, tento kód vyvolá chybu běhu 9: „Dolní index mimo rozsah v aplikaci Excel VBA . Ale při spuštění kódu musím použít obslužnou rutinu chyb On Error Resume Next ve VBA. Nebudeme dostávat žádné chybové zprávy. Spíše na konci okna se zprávou se mi zobrazí popis chyby, jako je tento.

Šablonu Excel VBA Subscript Out of Range si můžete stáhnout zde: - Šablona VBA Subscript Out of Range Template

Zajímavé články...