وی بی اے بائیف ڈیفالومنٹ کی قسم میں میل جول غلطی | سرفہرست 3 اسباب اور خرابی کی اصلاحات
ایکسل VBA میں ByRef دلیل کی قسم سے میل نہیں کھاتا ہے
اس آرٹیکل میں ، ہم ایکسل وی بی اے بائریف کو "دلیل کی قسم کی غلط فہمی" کے بطور استعمال کرتے وقت پیش آنے والی غلطی کی وضاحت کرتے ہیں۔ اس سے پہلے میں آپ کو پہلے بائی ریف سے متعارف کراتا ہوں۔ متغیرات کسی بھی پروگرامنگ زبان کی کلید ہوتی ہیں اور وی بی اے بھی مختلف نہیں ہوتا ہے۔ ہم نے متغیر کو اعلان کرنے کے بہت سارے طریقوں کو دیکھا ہے متغیر کے اعلان کرنے کا ایک ایسا ہی طریقہ "بائیریف" اور "بائیوال" کے الفاظ استعمال کرکے ہے۔
بائیریف کا کیا مطلب ہے؟
"بائیریف" کا مطلب ہے "حوالہ کے لحاظ سے" ، اس لفظ کا استعمال کرتے ہوئے ہم اصل میں حوالہ کے ذریعہ طریقہ کار (سب اور فنکشن دونوں کے لئے) کو دلائل پیش کرسکتے ہیں۔ یہ اس کے بھائی "بائی ویل" کے برخلاف ہے جو لچکدار نہیں بلکہ فطرت میں طے ہے۔
اس کو سمجھنے کے ل let ذیل میں دو میکرو پر ایک نظر ڈالیں۔
کوڈ:
سب میکرو 1 () ڈم اے جب تک لانگ اے = 50 میکرو 2 اے میس بکس ایک اینڈ سب سب میکرو 2 (بائریف ایک لمبی جب تک) A = A * 10 آخر سب
ہمارے یہاں دو سب پروسیسرز ہیں جن کا نام بالترتیب مکرو 1 اور میکرو 2 ہے۔ اس کو بہتر طور پر سمجھنے کے لئے F8 بٹن دباکر میکرو لائن کو لائن پر چلائیں۔
50 کی حیثیت سے متغیر "A" کی قدر حاصل کرنے کے لئے F8 کی دبائیں۔
کوڈ کی اگلی لائن "میکرو 2 اے" کہتی ہے یعنی دوسرے میکرو کا نام اور "اے" متغیر ہے جس کی وضاحت "بائی ریف" لفظ کے ذریعے کی جاتی ہے۔
جیسا کہ آپ دیکھ سکتے ہیں اس لمحے ہم کوڈ "میکرو 2 اے" کی لائن پر عمل درآمد کرتے ہیں ، یہ مندرجہ بالا طریقہ کار سے اگلے وی بی اے سب پروسیجر میں کود پڑا ہے۔
اب ہم دیکھ سکتے ہیں کہ متغیر "A" کی قدر 50 ہے کیونکہ یہ ہم نے متغیر "A" کا اعلان کرنے کے لئے "بائی رف" کا استعمال کیا ہے جو اسی طرح کی ہے میکرو 1 اس نے اس قدر کو حاصل کرلیا ہے جو ہم نے اس متغیر "A" کے لئے تفویض کیا ہے میکرو 1.
اب اس میکرو میں (میکرو 2) مساوات میں A = A * 10 یعنی A = 50 * 100. مندرجہ بالا میکرو پر واپس جانے کے لئے F8 کی 3 بار دبائیں۔میکرو 1).
VBA میں میسج باکس میں متغیر “A” کی قدر دیکھنے کے لئے اب ایک بار F8 کلید دبائیں۔
قیمت 500 کہتی ہے۔
اگرچہ ہم نے اس میکرو (میکرو 1) میں جو قدر دی ہے وہ 50 ہے ، بائریف کے لفظ کا استعمال کرکے ہم نے میکرو 1 سے متغیر "اے" کی قدر برقرار رکھتے ہوئے اصل میں میکرو 2 سب پروسیسر کو متحرک کیا اور پھر 10 کی ضرب لگا کر اے کی قدر کو نافذ کیا۔
وی بی اے بائیرف دلیل کی قسم سے مماثل ہونے کی سرفہرست 3 اسباب
اوپر ہم نے دیکھا ہے کہ "بایراف" کس طرح کام کرتا ہے لیکن ہم کچھ غلطیاں کرنے کے پابند ہیں جس کے نتیجے میں وی بی اے کی غلطی کے پیغام کو "بائیریف استدلال کی قسم کی غلط قسم" کے طور پر پھینک دیا گیا۔
اس کی بہت سی وجوہات ہیں اور اس حصے میں ، ہم آپ کو دکھائیں گے کہ اس غلطی کو کس طرح درست کیا جائے اور کوڈ کو ڈیبگ کیا جائے۔
آپ یہ VBA ByRef Argument Type Mismatch Excel سانچہ یہاں ڈاؤن لوڈ کرسکتے ہیں - VBA ByRef Argument Type Mismatch Excel سانچہغلطی کی وجہ # 1 - مختلف متغیر نام
ایکسل وی بی اے میں اس غلطی کو حاصل کرنے کے پیچھے ایک اہم وجہ دو طریق procedures کار میں منظور مختلف متغیرات ہیں۔ مثال کے طور پر نیچے کوڈ ملاحظہ کریں۔
کوڈ:
سب میکرو 1 () ڈم اے جیسا لانگ اے = 50 میکرو 2 بی میس بکس ایک اینڈ سب سب میکرو 2 (بائیریف ایک لمبی جب تک) بی = بی * 10 اختتامی سب
میکرو ون میں ہم نے "A" متغیر استعمال کیا ہے اور میکرو 2 میں ہم نے "B" متغیر استعمال کیا ہے۔ اب اگر آپ کوڈ چلانے کی کوشش کرتے ہیں تو ہمیں VBA کی خرابی بطور "بائیف آرگیومنٹ ٹائپ موازم" مل جائے گی۔
جیسا کہ آپ دیکھ سکتے ہیں کہ متغیر "B" کو اجاگر کیا گیا ہے کیونکہ متغیر نام کی قسم ایک مماثلت نہیں ہے۔
حل: اس مسئلے پر قابو پانے کے ل we ہمیں یہ یقینی بنانا ہوگا کہ دونوں طریقہ کار میں متغیر نام عین ہیں۔
غلطی کی وجہ 2: مختلف متغیر ڈیٹا کی اقسام
اگرچہ متغیر نام ایک جیسے ہیں پھر بھی اس سے خرابی ہوتی ہے اس کی وجہ یہ ہے کہ ہم ان کو تفویض کرتے ہیں۔ نیچے کوڈ ملاحظہ کریں۔
کوڈ:
سب میکرو 1 () دھیما A کے بطور اعداد A = 50 میکرو 2 A MsgBox A اختتام سب سب میکرو 2 (بائیریف ایک لمبے عرصے تک) A = A * 10 آخر سب
مندرجہ بالا کوڈز میں ، میں نے متغیر "A" کو میکرو 1 میں انٹیجر ڈیٹا ٹائپ کے طور پر اور میکرو 2 میں اسی متغیر کو ڈیٹا ٹائپ کو "لانگ" کے طور پر تفویض کیا تھا۔
جب ہم اس کوڈ کو چلاتے ہیں تو ، اس سے VBA کی خرابی ہوگی۔
اس کی وجہ یہ ہے کہ ہم نے ایک ہی متغیر نام کے لئے ڈیٹا کی دو مختلف اقسام تفویض کی ہیں۔
حل: دونوں طریقہ کار میں ڈیٹا کی نوعیت ایک جیسی ہونی چاہئے۔
خرابی کی وجہ 3: متغیر ڈیٹا کی اقسام ایک میکرو میں گم ہیں
ایکسل وی بی اے کی غلطی "بائیف آرگیومنٹ ٹائپ میومچ" ایک میکرو میں تفویض کردہ ڈیٹا ٹائپ کی وجہ سے ہوسکتی ہے اور کسی دوسرے میکرو میں تفویض نہیں کی گئی تھی۔
کوڈ:
سب میکرو 1 () A = 50 میکرو 2 ایک میس بکس اینڈ سب سب میکرو 2 (بائیریف ایک لمبے عرصے تک) A = A * 10 اختتامی سب
میکرو ون کے مذکورہ کوڈ میں ، میں نے کسی متغیر کا اعلان نہیں کیا ہے بلکہ اس کی بجائے محض متغیر کو قیمت تفویض کردی ہے۔
دوسری طرف میکرو 2 کے ل I میں نے متغیر کو “A” طویل عرصے سے اعلان کیا ہے۔ اگر آپ اس کوڈ کو چلانے کی کوشش کرتے ہیں تو اس سے "بائیف آرگیومنٹ ٹائپ میں مماثلت" VBA خرابی ہوگی۔
حل 1: اس قسم کے حالات سے بچنے کے لئے پہلے حل میں یہ ہے کہ وہ دونوں طریقہ کار میں متغیر کا اعلان کریں اور ایک ہی طرح کی ڈیٹا کو تفویض کریں۔
حل 2: ایک متبادل حل یہ ہے کہ ماڈیول کے اوپری حصے میں "آپشن واضح" لفظ شامل کرکے متغیر اعلامیہ کو لازمی قرار دیا جائے۔
یہ کیا کرے گا یہ ہے کہ اس سے پہلے کہ یہ VBA "ByRef Argument Type Mismatch" دکھائے اس سے پہلے کہ اصل میں ہم سے سب سے پہلے متغیر کا اعلان کرنے کو کہا جائے۔
تو ، VBA میں آپشن کا واضح ہمیشہ کام آتا ہے۔
یاد رکھنے والی چیزیں
- بائیریف بائی ویل کے مخالف ہے۔
- بائیریف ایک طریقہ کار سے دوسرے طریقہ کار کا حوالہ دیتا ہے۔
- متغیر نام ، ڈیٹا کی قسم دونوں طریقہ کار میں یکساں ہونا چاہئے۔
- متعدد متغیر کی صورت میں ہر متغیر کو الگ سے اعلان کرنے کی ضرورت ہے۔