VBA Subscript Wala sa Saklaw (Run-Time Error '9') | Bakit Nagaganap ang Error na Ito?

Ang Excel VBA Subscript Wala sa Saklaw

Ang subskripsyon na wala sa saklaw ay isang error na nakasalamuha namin sa VBA kapag sinubukan naming mag-refer ng isang bagay o isang variable na wala sa isang code, halimbawa, ipagpalagay nating wala kaming variable na nagngangalang x ngunit gumagamit kami ng msgbox function sa x namin makaka-engkwentro sa labas ng error sa saklaw.

Ang VBA Subscript na wala sa saklaw na error ay nangyayari dahil ang object na sinusubukan naming i-access ay wala. Ito ay isang uri ng error sa pag-coding ng VBA at ito ay isang "Run Time Error 9". Mahalagang maunawaan ang mga konsepto upang magsulat ng mahusay na code at mas mahalaga na maunawaan ang error ng iyong VBA code upang ma-debug nang maayos ang code.

Kung ang iyong error sa pag-coding at hindi mo alam kung ano ang error na iyon kapag wala ka na.

Ang isang doktor ay hindi maaaring magbigay ng gamot sa kanyang pasyente nang hindi nalalaman kung ano ang sakit. Para bang mga doktor at pasyente, kapwa alam na mayroong isang sakit (error) ngunit mahalagang maunawaan ang sakit (error) kaysa sa pagbibigay ng gamot dito. Kung maaari mong maunawaan ang error nang perpekto pagkatapos ay mas madali itong makahanap ng solusyon.

Sa isang katulad na tala sa artikulong ito, makikita namin ang isa sa mga mahahalagang error na karaniwang nakakaranas kami ng regularidad ibig sabihin, error na "Subscript Out of Range" sa Excel VBA.

Ano ang Subscript mula sa Saklaw na Error sa Excel VBA?

Halimbawa, kung tinutukoy mo ang sheet na wala ang workbook pagkatapos ay makukuha namin Error sa pagpapatakbo ng oras 9: "Subscript na wala sa Saklaw".

Kung nag-click ka sa pindutan ng Pagtatapos magtatapos ito ng subprosedure, kung mag-click ka sa pag-debug dadalhin ka sa linya ng code kung saan nakaranas ito ng isang error, at dadalhin ka ng tulong sa pahina ng website ng Microsoft.

Bakit Nagaganap ang Subscript Out of Range Error?

Tulad ng sinabi ko bilang isang doktor na mahalaga na hanapin ang namatay bago isipin ang tungkol sa gamot. Ang VBA Subscript na wala sa saklaw na error ay nangyayari kapag ang linya ng code ay hindi nabasa ang bagay na aming ipinasok.

Para sa isang halimbawa tingnan ang imahe sa ibaba, mayroon akong tatlong mga sheet na pinangalanan bilang Sheet1, Sheet2, Sheet3.

Ngayon sa code, isinulat ko ang code upang piliin ang sheet na "Sales".

Code:

 Sub Macro2 () Sheets ("Sales"). Piliin ang End Sub 

Kung tatakbo ko ang code na ito gamit ang F5 key o mano-mano, tatapusin ko ang pagkuha ng Error sa pagpapatakbo ng oras 9: "Subscript na wala sa Saklaw".

Ito ay sapagkat sinubukan kong i-access ang worksheet object na "Sales" na wala sa workbook. Ito ay isang error sa run time dahil naganap ang error na ito habang pinapatakbo ang code.

Ang isa pang karaniwang error sa subscript na nakukuha namin ay kapag tinutukoy namin ang workbook na wala doon. Para sa isang halimbawa tingnan ang code sa ibaba.

Code:

 Sub Macro1 () Dim Wb Bilang Workbook Set Wb = Mga Workbook ("Salary Sheet.xlsx") End Sub 

Sa itaas ng code ay sinabi ng variable WB ay dapat na katumbas ng workbook na "Salary Sheet.xlsx". Tulad ng ngayon, ang workbook na ito ay hindi bubuksan sa aking computer. Kung patakbo ko ang code na ito nang manu-mano o sa pamamagitan ng F5 key, makakakuha ako Error sa pagpapatakbo ng oras 9: "Subscript na wala sa Saklaw".

Ito ay dahil sa workbook na tinukoy ko, na alinman ay hindi bukas hanggang ngayon o wala man lang.

Error sa Subscript ng VBA sa Mga Array

Kapag idineklara mo ang array bilang isang Dynamic na array at kung hindi mo gagamitin ang salitang DIM o REDIM sa VBA upang tukuyin ang haba ng isang array na madalas naming makuha ang VBA Subscript na wala sa saklaw na error. Halimbawa, tingnan ang code sa ibaba.

Code:

 Sub Macro3 () Dim MyArray () Habang Mahaba MyArray (1) = 25 End Sub 

Sa itaas, naideklara ko ang variable bilang isang array ngunit hindi ko naitalaga ang panimulang at pagtatapos na punto sa halip na diretso ko nang itinalaga ang unang array na halaga ng 25.

Kung tatakbo ko ang code na ito gamit ang F5 key o mano-mano pagkatapos, makukuha namin Error sa pagpapatakbo ng oras 9: "Subscript na wala sa Saklaw".

Upang ayusin ang isyung ito kailangan kong italaga ang haba ng isang array sa pamamagitan ng paggamit ng Redim na salita.

Code:

 Sub Macro3 () Dim MyArray () Hangga't ReDim MyArray (1 To 5) MyArray (1) = 25 End Sub 

Ang code na ito ay hindi nagbibigay ng anumang mga error.

Paano Ipakita ang Mga Error sa Pagtatapos ng VBA Code?

Kung hindi mo nais na makita ang error habang ang code ay nakabukas at tumatakbo ngunit kailangan ng isang listahan ng error sa dulo kung gayon kailangan mong gamitin ang handler ng error na "On Error Resume". Tingnan ang code sa ibaba.

Code:

 Sub Macro1 () Dim Wb Bilang Workbook Sa Error Resume Susunod na Itakda Wb = Mga Workbook ("Salary Sheet.xlsx") MsgBox Err.Description End Sub 

Tulad ng nakita natin na magtatapon ang code na ito Error sa pagpapatakbo ng oras 9: “Subscript na wala sa Saklaw sa Excel VBA. Ngunit kailangan kong gamitin ang error handler Sa Error Resume Susunod sa VBA habang pinapatakbo ang code hindi kami makakakuha ng anumang mga mensahe ng error sa halip sa kahon ng mensahe ng pagtatapos ay ipinapakita sa akin ang paglalarawan ng error tulad nito.

Maaari mong i-download ang Excel VBA Subscript Out of Range Template dito: - VBA Subscript Out of Range Template