Indice VBA în afara intervalului (eroare de execuție '9') - De ce apare această eroare?

Indice VBA Excel în afara intervalului

Indice în afara intervalului este o eroare pe care o întâlnim în VBA atunci când încercăm să referim ceva sau o variabilă care nu există într-un cod, de exemplu, să presupunem că nu avem o variabilă numită x, dar folosim funcția msgbox pe x noi va întâlni eroare de subindice în afara intervalului.

Eroarea VBA Subscript în afara intervalului apare deoarece obiectul pe care încercăm să îl accesăm nu există. Acesta este un tip de eroare în codarea VBA, și aceasta este o „Eroare de timp de execuție 9”. Este important să înțelegeți conceptele pentru a scrie cod eficient și este și mai important să înțelegeți eroarea codului VBA pentru a depana codul în mod eficient.

Dacă eroarea dvs. de codare și nu știți care este această eroare atunci când ați dispărut.

Un medic nu poate da medicamente pacientului său fără să știe care este boala. Cu siguranță, medicii și pacienții știu că există o boală (eroare), dar este important să înțelegeți boala (eroare) decât să îi dați medicamente. Dacă puteți înțelege perfect eroarea, atunci este mult mai ușor să găsiți soluția.

Într-o notă similară din acest articol, vom vedea una dintre erorile importante pe care le întâlnim de obicei cu regularitate, adică, eroarea „Subscript Out of Range” în Excel VBA.

Ce este eroarea de subindice din interval în Excel VBA?

De exemplu, dacă vă referiți la foaia care nu există, este registrul de lucru, atunci vom primi eroarea de timp de execuție 9: „Subscript out of Range”.

Dacă faceți clic pe butonul Sfârșit, acesta va încheia subprocedura, dacă faceți clic pe depanare, vă va duce la linia de cod unde a întâmpinat o eroare și ajutorul vă va duce la pagina site-ului web Microsoft.

De ce apare o eroare de subscriere în afara intervalului?

După cum mi-am spus, ca medic, este important să găsesc decedatul înainte de a mă gândi la medicament. Eroarea VBA Subscrib out of range apare atunci când linia de cod nu citește obiectul pe care l-am introdus.

De exemplu, uitați-vă la imaginea de mai jos. Am trei foi numite Sheet1, Sheet2, Sheet3.

Acum, în cod, am scris codul pentru a selecta foaia „Vânzări”.

Cod:

Sub Macro2 () Foi ("Sales"). Selectați End Sub

Dacă rulez acest cod folosind tasta F5 sau manual, voi primi eroarea de timp de execuție 9: „Subscript out of Range”.

Acest lucru se datorează faptului că am încercat să accesez obiectul foii de lucru „Vânzări”, care nu există în registrul de lucru. Aceasta este o eroare în timpul rulării, deoarece această eroare a apărut în timpul rulării codului.

O altă eroare obișnuită de indice pe care o primim este când ne referim la registrul de lucru care nu este acolo. De exemplu, uitați-vă la codul de mai jos.

Cod:

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

Codul de mai sus spune că variabila WB ar trebui să fie egală cu registrul de lucru „Salary Sheet.xlsx”. În prezent, acest registru de lucru nu este deschis pe computerul meu. Dacă rulez acest cod manual sau prin intermediul tastei F5, voi primi eroarea de timp de execuție 9: „Subscript out of Range”.

Acest lucru se datorează registrului de lucru la care mă refer, care fie nu este deschis de acum, fie nu există deloc.

Eroare de abonament VBA în matrice

Când declarați matricea ca matrice dinamică și dacă nu utilizați cuvântul DIM sau REDIM în VBA pentru a defini lungimea unui tablou, obținem de obicei eroarea VBA Subscript din interval. De exemplu, uitați-vă la codul de mai jos.

Cod:

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

În cele de mai sus, am declarat variabila ca o matrice, dar nu am atribuit un punct de început și de sfârșit; mai degrabă, am atribuit imediat primei matrice valoarea 25.

Dacă rulez acest cod folosind tasta F5 sau manual, vom primi eroarea de timp de execuție 9: „Subscript out of Range”.

Pentru a remedia această problemă, trebuie să aloc lungimea unui tablou folosind cuvântul Redim.

Cod:

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

Acest cod nu dă erori.

Cum se afișează erori la sfârșitul codului VBA?

Dacă nu doriți să vedeți eroarea în timp ce codul este pornit și rulează, dar are nevoie de o listă de erori la sfârșit, atunci trebuie să utilizați gestionarul de erori „On Error Resume”. Uită-te la codul de mai jos.

Cod:

Sub Macro1 () Dim Wb Ca registru de lucru la eroare Reluați următorul Set Wb = Workbooks ("Salary Sheet.xlsx") MsgBox Err.Description End Sub

Așa cum am văzut, acest cod va arunca eroarea de timp de rulare 9: „Subscript out of Range in Excel VBA . Dar trebuie să folosesc gestionarul de erori On Error Resume Next în VBA în timp ce rulez codul. Nu vom primi niciun mesaj de eroare. Mai degrabă la sfârșitul casetei de mesaj îmi arată descrierea erorii ca aceasta.

Puteți descărca șablonul Excel VBA Subscript Out of Range aici: - Șablon VBA Subscript Out of Range

Articole interesante...