VBA-abonnement buiten bereik

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 bestaat in een code, bijvoorbeeld, laten we aannemen 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 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 fout "Subscript buiten bereik" in Excel VBA.

Wat is de fout Subscript buiten bereik in Excel VBA?

Als u bijvoorbeeld verwijst naar het blad dat niet aanwezig is in de werkmap, krijgen we Runtime-fout 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 arts 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 voor een voorbeeld naar de onderstaande afbeelding, ik heb drie vellen genaamd 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 voor een voorbeeld naar de onderstaande code.

Code:

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

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: "Subscript 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 buiten bereikfout. 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 als een array gedeclareerd, maar ik heb geen begin- en eindpunt toegewezen, maar ik heb 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 met behulp van Redim-woord.

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 fouthandler "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 weergeven: “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 zullen geen foutmeldingen krijgen, maar aan het einde toont het berichtvenster me de foutbeschrijving als deze.

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