VBA-abonnement buiten bereik (runtime-fout '9') - Waarom treedt deze fout op?

Excel VBA-abonnement buiten bereik

Subscript buiten bereik is een fout die we tegenkomen in VBA wanneer we proberen te verwijzen naar iets of een variabele die niet in een code bestaat, laten we bijvoorbeeld veronderstellen dat we geen variabele hebben met de naam x, maar we gebruiken de msgbox-functie op x we zal een subscript buiten bereik fout tegenkomen.

VBA Subscript buiten bereik-fout treedt op omdat het object dat we proberen te openen niet bestaat. Dit is een fouttype in VBA-codering en dit is een "Runtime-fout 9". Het is belangrijk om de concepten te begrijpen om efficiënte code te schrijven, en het is zelfs nog belangrijker om de fout van uw VBA-code te begrijpen om de code efficiënt te debuggen.

Als uw coderingsfout en u weet niet wat die fout is als u weg bent.

Een arts kan zijn patiënt geen medicijnen geven zonder te weten wat de ziekte is. Zeker, artsen en patiënten weten allebei dat er een ziekte (fout) is, maar het is belangrijk om de ziekte (fout) te begrijpen dan er medicijnen aan te geven. Als u de fout perfect begrijpt, is het veel gemakkelijker om de oplossing te vinden.

Op een vergelijkbare opmerking in dit artikel, zullen we een van de belangrijke fouten zien die we gewoonlijk met regelmaat tegenkomen, namelijk de "Subscript buiten bereik" -fout in Excel VBA.

Wat is de fout Subscript buiten bereik in Excel VBA?

Als u bijvoorbeeld verwijst naar het blad dat er niet is, is de werkmap, dan krijgen we uitvoeringsfout 9: "Subscript buiten bereik."

Als u op de knop Einde klikt, wordt de subprocedure beëindigd. Als u op foutopsporing klikt, gaat u naar de coderegel waar een fout is opgetreden, en met hulp wordt u naar de Microsoft-website-pagina geleid.

Waarom treedt er een fout in het subscript buiten bereik op?

Zoals ik vertelde als dokter is het belangrijk om de overledene te vinden voordat je aan het medicijn denkt. VBA Subscript buiten bereik fout treedt op wanneer de regel code het object dat we hebben ingevoerd niet leest.

Kijk bijvoorbeeld naar de onderstaande afbeelding. Ik heb drie vellen met de naam Sheet1, Sheet2, Sheet3.

Nu heb ik in de code de code geschreven om het blad 'Verkoop' te selecteren.

Code:

Sub Macro2 () Bladen ("Verkoop"). Selecteer End Sub

Als ik deze code uitvoer met de F5-toets of handmatig, krijg ik de runtime-fout 9: 'Subscript buiten bereik'.

Dit komt omdat ik heb geprobeerd toegang te krijgen tot het werkbladobject "Verkoop", dat niet bestaat in de werkmap. Dit is een runtime-fout omdat deze fout is opgetreden tijdens het uitvoeren van de code.

Een andere veel voorkomende subscriptfout die we krijgen, is wanneer we verwijzen naar de werkmap die er niet is. Kijk bijvoorbeeld naar de onderstaande code.

Code:

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

De bovenstaande code zegt dat variabele WB gelijk moet zijn aan de werkmap 'Salarisblad.xlsx'. Op dit moment wordt deze werkmap niet geopend op mijn computer. Als ik deze code handmatig of via de F5-toets uitvoer , krijg ik runtime-fout 9: 'Abonnement buiten bereik'.

Dit komt door de werkmap waarnaar ik verwijs, die momenteel niet open is of helemaal niet bestaat.

VBA-subscriptfout in arrays

Wanneer u de array declareert als de dynamische array en als u het woord DIM of REDIM in VBA niet gebruikt om de lengte van een array te definiëren, krijgen we meestal een VBA Subscript-fout buiten bereik. Kijk bijvoorbeeld naar de onderstaande code.

Code:

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

In het bovenstaande heb ik de variabele gedeclareerd als een array, maar ik heb geen begin- en eindpunt toegewezen; in plaats daarvan heb ik de eerste array meteen de waarde 25 toegewezen.

Als ik deze code uitvoer met de F5-toets of handmatig, krijgen we runtime-fout 9: 'Subscript buiten bereik'.

Om dit probleem op te lossen, moet ik de lengte van een array toewijzen door het Redim-woord te gebruiken.

Code:

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

Deze code geeft geen foutmeldingen.

Hoe fouten weergeven aan het einde van de VBA-code?

Als u de fout niet wilt zien terwijl de code actief is, maar aan het einde een foutenlijst nodig heeft, moet u de foutafhandelaar "On Error Resume" gebruiken. Kijk naar de onderstaande code.

Code:

Sub Macro1 () Dim Wb As Workbook On Error Hervat Volgende Set Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Description End Sub

Zoals we hebben gezien, zal deze code runtime-fout 9 genereren : “Subscript buiten bereik in Excel VBA . Maar ik moet de fout-handler On Error Resume Next in VBA gebruiken tijdens het uitvoeren van de code. We krijgen geen foutmeldingen. In plaats daarvan wordt aan het einde van het berichtvenster de foutbeschrijving als volgt weergegeven.

U kunt het Excel VBA-subscript buiten bereik-sjabloon hier downloaden: - VBA-subscript buiten bereik-sjabloon

Interessante artikelen...