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 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. Pro jistotu lékaři i pacienti 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 snazší 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 není, je sešit, pak se 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 zemřelé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.

Pro příklad se podívejte 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í. Například se podívejte na níže uvedený kód.

Kód:

 Sub Macro1 () Dim Wb As Workbook 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 „Platový list.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 konečný 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í Redim slova.

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 při obnovení chyb dále ve VBA, nebudeme dostávat žádné chybové zprávy, spíše na konci zprávy 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