فہرست کا خانہ
ایکسل میں VBA کے ساتھ کام کرنے کے دوران ہمیں جن سب سے عام غلطیوں کا سامنا کرنا پڑتا ہے وہ یہ ہے کہ صارف کی وضاحت کردہ قسم کی وضاحت نہیں کی گئی ہے۔ اس مضمون میں، میں آپ کو بتاؤں گا کہ یہ غلطی کیوں ہوئی اور اس خرابی کو کیسے حل کیا جائے۔
پریکٹس ورک بک ڈاؤن لوڈ کریں
اس پریکٹس ورک بک کو ڈاؤن لوڈ کریں اس مضمون کو پڑھ رہے ہیں۔
صارف کی وضاحت شدہ قسم کی وضاحت نہیں کی گئی ہے۔ ایکسل VBA میں ٹائپ ناٹ ڈیفائنڈایکسل VBA میں اکثر سامنے آنے والی اس خرابی کے پیچھے 2 بڑے مسائل ہیں۔ آئیے انہیں تفصیل سے دریافت کریں اور انہیں حل کرنے کے طریقے تلاش کریں۔
1۔ متغیرات کا اعلان کرتے وقت ہجے کی خرابی
یہ اس غلطی کی بڑی وجہ ہے۔ زیادہ تر وقت، خرابی "صارف کی وضاحت شدہ قسم کی وضاحت نہیں کی گئی" متغیرات کا اعلان کرتے وقت ہجے کی غلطی کی وجہ سے ہوتی ہے۔
کوڈز کی درج ذیل لائنوں کو دیکھیں۔
1119
اگر آپ اس کوڈ کو چلاتے ہیں، تو آپ کو ایک ایرر باکس ملے گا جو آپ کو خرابی کی موجودگی کی اطلاع دے گا "صارف کی وضاحت شدہ قسم کی وضاحت نہیں کی گئی"۔ 2 0>
مجھے امید ہے کہ آپ کو پوائنٹ مل جائے گا۔ 1 لیکن جب یہپتہ چلا کہ آپ نے کہیں بھی اس کا اعلان نہیں کیا ہے، اس نے ایک غلطی پیدا کردی۔
اس لیے، سادہ VBA کوڈز چلاتے ہوئے، اگر آپ کو کسی بھی طرح سے اس ایرر کا سامنا کرنا پڑتا ہے، تو پہلے اپنی متغیر کی قسموں کے تمام ہجے چیک کریں۔
2۔ مناسب حوالہ کی کمی
یہ اس غلطی کے پیچھے ایک اور وجہ ہے۔ یہ مناسب حوالہ کی کمی ہے۔ بعض اوقات ہم اپنے کوڈز میں کچھ ایسی اشیاء استعمال کرتے ہیں جن کے لیے بصری بنیادی حوالہ خانہ سے مناسب حوالہ درکار ہوتا ہے۔ بصورت دیگر، VBA آبجیکٹ کو نہیں پہچانتا ہے۔
مندرجہ ذیل VBA کوڈ کو دیکھیں۔
5614
اس کوڈ کو چلائیں۔ آپ کو وہی پرانی خرابی ملے گی "User-defined Type not defined"، Dictionary Object کو ہائی لائٹ کرتے ہوئے۔ اس کی وجہ یہ ہے کہ VBA ڈکشنری آبجیکٹ کو نہیں پہچان سکا، اور اسے صارف کی طرف سے متعین متغیر سمجھا، جس کی غلطی سے تعریف نہیں کی گئی ہے۔
اب سب سے بڑا سوال یہ ہے کہ اس غلطی کو کیسے حل کیا جائے؟ آسان اس خرابی کو حل کرنے کے 2 طریقے ہیں۔
⧪ حل 1: بصری باکس ریفرنس باکس سے پیشگی حوالہ چیک کرنا
یہ ہے اس مسئلے کو حل کرنے کا بہترین طریقہ۔ ٹولز > پر جائیں حوالہ جات بٹن بصری بنیادی ربن میں۔ حوالہ جات پر کلک کریں۔
14>
ایک ڈائیلاگ باکس جسے حوالہ جات کہتے ہیں کھل جائے گا۔ اسکرول کریں اور تلاش کریں مائیکروسافٹ اسکرپٹنگ رن ٹائم (یہ اس چیز پر منحصر ہے جسے آپ استعمال کر رہے ہیں۔ ڈکشنریآبجیکٹ کو مائیکروسافٹ اسکرپٹنگ رن ٹائم کو پہچاننے کی ضرورت ہے۔ لہذا، VBA کوڈ میں کسی آبجیکٹ کا استعمال کرتے وقت، آپ کو VBA کے ذریعے پہچانے جانے کے لیے اس کی شرط کو جاننا چاہیے۔ مزید معلومات کے لیے اس لنک پر جائیں۔) اسے چیک کریں۔
اب واپس آئیں اور کوڈ چلائیں۔ آپ کو کوئی غلطی نہیں ملے گی۔ کیونکہ VBA اس بار ڈکشنری آبجیکٹ کو پہچان سکتا ہے۔
⧪ حل 2: اسے مخصوص آبجیکٹ کے بجائے خالص آبجیکٹ قرار دینا
اس مسئلے کو حل کرنے کا ایک اور طریقہ ہے۔ آپ ڈکشنری آبجیکٹ کے بجائے آبجیکٹ کو خالص آبجیکٹ قرار دے سکتے ہیں۔
کوڈز کی درج ذیل لائنوں پر غور کریں۔
1875
یہاں میں نے متغیر کو MyDictionary کو ایک سادہ آبجیکٹ کے طور پر قرار دیا ہے، نہ کہ Dictionary اب اگر آپ اس کوڈ کو چلاتے ہیں تو آپ کو کوئی غلطی نہیں ہوگی۔