Hur fixar jag 'Subscript Out of Range' i Visual Basic för applikationer?



Prova Vårt Instrument För Att Eliminera Problem

Visual Basic for Applications (VBA) är en implementering av Visual Basic-programmeringsspråket utvecklat av Microsoft. VBA kan användas för att aktivera UDF: er, automatisera uppgifter och för åtkomst till WinAPI genom DLL-filer. Men ganska nyligen har många rapporter kommit in där användare inte kan utföra vissa kommandon och en “ Prenumeration utanför räckvidd, fel 9 ”Pops upp medan du försöker göra det.



Fel i prenumerationen utanför området



Vad orsakar felet 'Subscript Out of Range' i VBA?

Efter att ha fått många rapporter från flera användare bestämde vi oss för att undersöka problemet och tog fram en uppsättning lösningar för att lösa det helt. Vi tittade också på orsakerna till att den utlöstes och listade dem enligt följande.



  • Ej existerande element: I vissa fall är det möjligt att du kanske har refererat till ett element i kommandot som inte finns. Det är möjligt att prenumerationen är antingen större eller mindre än intervallet av möjliga prenumerationer eller dimensioner kanske inte har tilldelats matrisen vid denna punkt i applikationen.
  • Odefinierade element: Det är möjligt att du inte identifierade antalet element i din kod, det är viktigt att antalet element i en matris definieras med kommandona 'Dim' eller 'ReDim'.
  • Fel medlem i samlingen: I vissa fall kan användaren ha hänvisat till en samlingsmedlem som inte finns. Om en felaktig hänvisning görs mot samlingsmedlemmen kan detta fel utlösas.
  • Shorthand Script: Det är möjligt att du har använt en förkortad form av prenumeration och det specifikt specificerat ett element som var ogiltigt. Det är viktigt att använda ett giltigt nyckelnamn.

Nu när du har en grundläggande förståelse för problemets natur kommer vi att gå vidare mot lösningarna. Se till att implementera dessa i den specifika ordning som de presenteras för att undvika konflikter.

Lösning 1: Kontrollera matriser

Det är möjligt att du har definierat ett felaktigt värde för Array-elementet. Därför rekommenderas att dubbelkontrollera det värde som du har definierat för Array-elementet och se till att det är rätt. Se också till att du kontrollerar deklarationen för arrayen och kontrollera övre och nedre gränsen. Om matriserna har fått en ny dimension, se till att använda LBound och UBound funktioner för att komma åt villkor. Kontrollera stavningen av variabelnamnet om indexet är en variabel.

Array i VBA Excel



Lösning 2: Ange antal element

I vissa fall är det möjligt att du kanske inte har definierat antalet element i din kod på grund av vilket felet utlöses. Det rekommenderas att du anger antalet element i matrisen med hjälp av Ingen eller ReDim funktioner.

Använd Dim och ReDim för att ange antalet element

Lösning 3: Byta konstruktion

Detta fel utlöses vanligtvis när användaren anger en felaktig eller obefintlig samlingsmedlem. I stället för att specificera indexelementen rekommenderas därför att du närmar dig med “ För varje ... Nästa ”Konstruktion.

Med hjälp av konstruktionen 'För varje ... nästa'

Lösning 4: Kontrollera nyckelnamn och index

I vissa fall är det möjligt att du kan ha använt en förkortad form av prenumerationen och det anger ett ogiltigt element. Därför rekommenderas att du använder en giltig nyckel namn och index för samlingen.

Använda ett giltigt nyckelnamn

2 minuter läst