Com es pot corregir l’error ‘Subscript out of Range’ a Visual Basic per a aplicacions?



Proveu El Nostre Instrument Per Eliminar Problemes

Visual Basic for Applications (VBA) és una implementació del llenguatge de programació Visual Basic desenvolupat per Microsoft. VBA es pot utilitzar per habilitar UDF, automatitzar tasques i accedir a WinAPI mitjançant DLL. Tanmateix, recentment, han arribat molts informes on els usuaris no poden executar certes ordres i un ' Subíndex fora del rang, error 9 ”Apareix mentre intenta fer-ho.



Error de subíndex fora de l'interval



Què provoca l'error 'Subíndex fora del rang' a VBA?

Després de rebre nombrosos informes de diversos usuaris, vam decidir investigar el problema i vam idear un conjunt de solucions per solucionar-lo completament. A més, vam examinar els motius pels quals es desencadena i els vam enumerar de la manera següent.



  • Element inexistent: En alguns casos, és possible que hagueu fet referència a un element de l'ordre que no existeixi. És possible que el subíndex sigui més gran o més petit que l'interval de possibles subíndexs o que les dimensions no s'hagin assignat a la matriu en aquest punt de l'aplicació.
  • Elements sense definir: És possible que no identifiqueu el nombre d'elements del vostre codi, és important que el nombre d'elements d'una matriu es defineixi mitjançant les ordres 'Dim' o 'ReDim'.
  • Membre incorrecte de la col·lecció: En alguns casos, és possible que l'usuari hagi fet referència a un membre de la col·lecció que no existeix. Si es fa una referència incorrecta cap al membre de la col·lecció, es pot activar aquest error.
  • Guió abreujat: És possible que hàgiu utilitzat una forma abreviada de subíndex i que especifiqués implícitament un element que no era vàlid. És important utilitzar un nom de clau vàlid.

Ara que teniu una comprensió bàsica de la naturalesa del problema, continuarem cap a les solucions. Assegureu-vos d'implementar-los en l'ordre específic en què es presenten per evitar conflictes.

Solució 1: comprovació de matrius

És possible que hàgiu definit un valor incorrecte per a l'element Array. Per tant, es recomana comprovar de nou el valor que heu definit per a l'element Array i assegureu-vos que sigui el correcte. A més, assegureu-vos que comproveu la declaració de la matriu i verificar els límits superior i inferior. Si s'han redimensionat les matrius, assegureu-vos d'utilitzar el fitxer LBound i Enllaçat funcions per condicionar els accessos. Comproveu l'ortografia del nom de la variable si l'índex és una variable.

Matriu a VBA Excel



Solució 2: especificar el nombre d'elements

En alguns casos, és possible que no hagueu definit el nombre d'elements del codi a causa dels quals s'està activant l'error. Es recomana especificar el nombre d'elements de la matriu mitjançant el fitxer Cap o bé ReDim funcions.

Mitjançant Dim i ReDim per especificar el nombre d'elements

Solució 3: canvi de construcció

Aquest error es produeix habitualment quan l'usuari especifica un membre de col·lecció incorrecte o inexistent. Per tant, en lloc d’especificar els elements de l’índex, es recomana que us acosteu amb el “ Per a cadascun ... Següent ”Construir.

Utilitzant la construcció 'Per a cada ... següent'

Solució 4: comprovació del nom de la clau i de l’índex

En alguns casos, és possible que hàgiu utilitzat un formulari abreujat del subíndex i que especifiqui un element no vàlid. Per tant, es recomana utilitzar un fitxer clau vàlida nom i índex per a la col·lecció.

Utilitzant un nom de clau vàlid

2 minuts de lectura