وی بی اے سبسکرپٹ رینج سے باہر (رن ٹائم غلطی '9') | یہ غلطی کیوں ہوتی ہے؟

ایکسل VBA سبسکرپٹ حد سے باہر ہے

سب سکریپٹ آؤٹ رینج ایک ایسی غلطی ہے جس کا سامنا وی بی اے میں ہوتا ہے جب ہم کسی ایسی چیز یا کسی متغیر کا حوالہ دینے کی کوشش کرتے ہیں جو کوڈ میں موجود نہیں ہوتا ہے ، مثال کے طور پر ، فرض کریں کہ ہمارے پاس ایکس نامی متغیر نہیں ہے لیکن ہم ایکس بکس پر فکس باکس کا استعمال کرتے ہیں رینج کی خرابی سے باہر سبسکرپٹ کا سامنا کرنا پڑے گا۔

وی بی اے سبسکرپٹ سے باہر رینج کی خرابی اس وقت ہوتی ہے کیونکہ جس چیز کی ہم کوشش کر رہے ہیں وہ موجود نہیں ہے۔ یہ VBA کوڈنگ میں غلطی کی نوع ہے اور یہ ایک "رن ٹائم ایرر 9" ہے۔ موثر کوڈ لکھنے کے تصورات کو سمجھنا ضروری ہے اور کوڈ کو موثر انداز میں ڈیبگ کرنے کے ل V اپنے VBA کوڈ کی غلطی کو سمجھنا بھی اور بھی ضروری ہے۔

اگر آپ کی کوڈنگ میں خرابی ہے اور آپ نہیں جانتے ہیں کہ غلطی کیا ہے جب آپ چلے جاتے ہیں۔

ایک ڈاکٹر اپنے مریض کو یہ جاننے کے بغیر دوا نہیں دے سکتا کہ بیماری کیا ہے۔ یقینی طور پر ڈاکٹروں اور مریضوں کے ل both ، دونوں جانتے ہیں کہ کوئی بیماری ہے (غلطی) لیکن اس کو دوائی دینے کے بجائے اس بیماری (غلطی) کو سمجھنا ضروری ہے۔ اگر آپ غلطی کو بالکل سمجھ سکتے ہیں تو اس کا حل تلاش کرنا بہت آسان ہے۔

اسی مضمون میں اسی طرح کے ایک نوٹ پر ، ہم ایک اہم غلطی دیکھیں گے جس میں عام طور پر ہم باقاعدگی کا سامنا کرتے ہیں یعنی ایکسل وی بی اے میں "سبسکرپٹ آؤٹ رینج" کی خرابی۔

ایکسل وی بی اے میں رینج کی خرابی سے باہر سبسکرپٹ کیا ہے؟

مثال کے طور پر ، اگر آپ اس شیٹ کا حوالہ دے رہے ہیں جو ورک بک نہیں ہے تو ہمیں مل جاتا ہے رن ٹائم غلطی 9: "سبسکرپٹ حد سے باہر"۔

اگر آپ اینڈ بٹن پر کلیک کرتے ہیں تو یہ سب پروسیجر کو ختم کردے گا ، اگر آپ ڈیبگ پر کلک کرتے ہیں تو یہ آپ کو کوڈ کی لائن پر لے جائے گا جہاں اسے خرابی کا سامنا کرنا پڑا ، اور مدد آپ کو مائیکرو سافٹ ویب سائٹ کے صفحے پر لے جائے گی۔

سب سکریپٹ میں حد سے زیادہ خرابی کیوں پیش آتی ہے؟

جیسا کہ میں نے بطور ڈاکٹر بتایا تھا کہ دوائی کے بارے میں سوچنے سے پہلے میت کو تلاش کرنا ضروری ہے۔ وی بی اے سبسکرپٹ سے باہر رینج کی خرابی اس وقت ہوتی ہے جب کوڈ کی لائن اس اعتراض کو نہیں پڑھتی ہے جس کو ہم نے داخل کیا ہے۔

مثال کے طور پر نیچے دی گئی تصویر کو دیکھیں ، میرے پاس تین شیٹ ہیں جن کا نام شیٹ 1 ، شیٹ 2 ، شیٹ 3 ہے۔

اب کوڈ میں ، میں نے شیٹ "سیلز" کو منتخب کرنے کے لئے کوڈ لکھا ہے۔

کوڈ:

 سب میکرو 2 () شیٹس ("سیلز")۔ اختتام سب کو منتخب کریں 

اگر میں یہ کوڈ F5 کلید یا دستی طور پر استعمال کر رہا ہوں تو ، میں اس کو حاصل کروں گا رن ٹائم غلطی 9: "سبسکرپٹ حد سے باہر"۔

اس کی وجہ یہ ہے کہ میں نے ورک شیٹ آبجیکٹ "سیلز" تک رسائی حاصل کرنے کی کوشش کی جو ورک بک میں موجود نہیں ہے۔ یہ رن ٹائم غلطی ہے کیونکہ کوڈ چلاتے وقت یہ خامی پیش آگئی۔

ہمارے پاس ایک اور عام سبسکرپٹ کی خرابی اس وقت ہوتی ہے جب ہم ورک بک کو حوالہ دیتے ہیں جو وہاں موجود نہیں ہے۔ مثال کے طور پر نیچے کا کوڈ دیکھیں۔

کوڈ:

 سب میکرو 1 () ڈیم ڈبلیو بی کے بطور ورک بک سیٹ ڈبلیو بی = ورک بوکس ("سیلری شیٹ۔ ایکس ایل ایس ایکس") اختتامی سب 

اوپر والے کوڈ کا کہنا ہے کہ متغیر ڈبلیو بی کو ورک بک (تنخواہ شیٹ ڈاٹ ایکس ایل ایکس) کے برابر ہونا چاہئے۔ ابھی تک ، یہ ورک بک میرے کمپیوٹر پر نہیں کھولی ہے۔ اگر میں یہ کوڈ دستی طور پر یا F5 کلید کے ذریعہ چلاؤں تو مجھے مل جائے گا رن ٹائم غلطی 9: "سبسکرپٹ حد سے باہر"۔

یہ اس ورک بک کی وجہ سے ہے جس کا میں نے تذکرہ کیا ہے ، جو یا تو ابھی کھلا نہیں ہے یا بالکل موجود نہیں ہے۔

ارے میں وی بی اے سبسکرپٹ کی خرابی

جب آپ سرنی کو متحرک صف قرار دیتے ہیں اور اگر آپ VBA میں DIM یا REDIM کا لفظ کسی صف کی لمبائی کی وضاحت کے لئے استعمال نہیں کرتے ہیں تو ہم عام طور پر VBA سبسکرپٹ کو حد کی غلطی سے باہر کردیتے ہیں۔ مثال کے طور پر ، نیچے کا کوڈ ملاحظہ کریں۔

کوڈ:

 سب میکرو 3 () ڈم مائی آری () جب تک لانگ مآراے (1) = 25 اختتام سب 

مذکورہ بالا میں ، میں نے متغیر کو ایک صف قرار دیا ہے لیکن میں نے شروع اور اختتامی نقطہ تفویض نہیں کیا ہے بلکہ میں نے فورا. ہی پہلی صف کو 25 کی قیمت تفویض کردی ہے۔

اگر میں اس کوڈ کو F5 کلید یا دستی طور پر استعمال کرتا ہوں تو ہم مل جائیں گے رن ٹائم غلطی 9: "سب سکریپٹ حد سے باہر"۔

اس مسئلے کو حل کرنے کے ل I مجھے ریڈیم ورڈ استعمال کرکے کسی صف کی لمبائی تفویض کرنے کی ضرورت ہے۔

کوڈ:

 سب میکرو 3 () ڈم مائر ایری () جب تک طویل عرصے سے ریڈیم مائی ایرے (1 سے 5) مآرrayی (1) = 25 اختتامی سب 

یہ کوڈ کوئی غلطی نہیں کرتا ہے۔

وی بی اے کوڈ کے اختتام پر خامیاں کیسے دکھائیں؟

اگر آپ کوڈ ختم ہونے اور چلانے کے دوران غلطی نہیں دیکھنا چاہتے ہیں لیکن آخر میں کسی غلطی کی فہرست کی ضرورت ہے تو آپ کو "آن ایرر ریزیومے" خرابی ہینڈلر استعمال کرنے کی ضرورت ہے۔ نیچے کوڈ ملاحظہ کریں۔

کوڈ:

 سب میکرو 1 () ڈمب ڈبلیو بی کے بطور نقص کتاب اگلی سیٹ Wb = ورک بوک ("تنخواہ شیٹ. xlsx") MsgBox غلطی کا بیان اختتامی سب 

جیسا کہ ہم نے دیکھا ہے کہ یہ کوڈ پھینک دے گا رن ٹائم غلطی 9: “سبسکرپٹ حد سے باہر ہے ایکسل وی بی اے میں. لیکن مجھے کوڈ چلاتے وقت ایرر ریسمیٹ اگلے میں خرابی ہینڈلر کا استعمال کرنا ہوگا جب ہمیں کوڈ چلاتے ہوئے کوئی خرابی والے پیغامات نہیں ملیں گے بلکہ آخر میں پیغام والے باکس میں مجھے غلطی کی تفصیل دکھاتی ہے۔

آپ یہاں ایکسل وی بی اے سبسکرپٹ آؤٹ رینج ٹیمپلیٹ کو ڈاؤن لوڈ کرسکتے ہیں: - وی بی اے سبسکرپٹ آؤٹ رینج ٹیمپلیٹ