خطأ عدم تطابق نوع VBA (أمثلة) | كيفية إصلاح خطأ وقت التشغيل 13؟
خطأ عدم تطابق النوع أو يمكننا أيضًا تسميته برمز الخطأ 13 يحدث عندما نخصص قيمة لمتغير ليس من نوع بياناته ، على سبيل المثال ، إذا قدمنا قيمة عشرية أو قيمة طويلة لمتغير نوع بيانات عدد صحيح فسنقوم تواجه خطأ عدم تطابق النوع هذا عند تشغيل الكود الذي يظهر على أنه رمز الخطأ 13.
ما هو خطأ عدم تطابق نوع VBA؟
خطأ عدم تطابق نوع VBA في Excel هو نوع من "خطأ وقت التشغيل" وهو الخطأ رقم 13 في هذه الفئة.
لبدء التعلم في VBA وللمبتدئين ، من الصعب العثور على الخطأ الناتج عن رموز VBA. تذكر أن VBA لا يخطئ ، بل إنه يبرز أخطائنا أثناء كتابة الكود.
عادة ما نعلن عن المتغيرات ونقوم بتعيين أنواع البيانات لها. عندما نقوم بتعيين قيمة لهذه المتغيرات ، نحتاج إلى تذكر نوع البيانات التي يمكن أن تحتويها ، إذا لم تكن القيمة المخصصة وفقًا لنوع البيانات ، فسنحصل على "خطأ وقت التشغيل 13: عدم تطابق النوع".
كيفية إصلاح خطأ وقت تشغيل عدم تطابق نوع VBA 13؟
دعونا نرى بعض الأمثلة لفهم خطأ عدم تطابق نوع VBA.
يمكنك تنزيل قالب Excel غير المطابق لنوع VBA من هنا - قالب Excel غير متطابق لنوع VBAعدم تطابق نوع VBA - المثال رقم 1
للحصول على مثال ، انظر إلى رمز VBA أدناه.
رمز:
Type_MisMatch_Example1 () خافت k كـ بايت k = "Hiii" MsgBox k End Sub
لقد أعلنت أن المتغير "k" هو بايت.
هذا يعني أن المتغير "k" يمكنه الاحتفاظ بقيم من 0 إلى 255. ولكن في السطر التالي ، قمت بتعيين قيمة المتغير "k" على أنها "Hiii".
من الواضح جدًا أن نوع البيانات لا يمكنه الاحتفاظ بقيمة النص ، لذلك يأتي هنا خطأ عدم تطابق النوع.
عدم تطابق نوع VBA - مثال رقم 2
الآن ألق نظرة على مثال آخر بنوع بيانات مختلف. انظر إلى الكود أدناه.
رمز:
النوع الفرعي Type_MisMatch_Example2 () خافت × مثل منطقي × = 4556 MsgBox x End Sub
لقد أعلنا المتغير "x" على أنه منطقي.
Boolean هو نوع بيانات يمكنه الاحتفاظ بقيمة إما TRUE أو FALSE.
في الكود أعلاه ، قمنا بتعيين قيمة 4556 ، وهي ليست وفقًا لقيم نوع البيانات TRUE أو FALSE.
عندما نقوم بتشغيل هذا الرمز ، قد تتوقع خطأ عدم تطابق النوع ، ولكن انظر ماذا يحدث عندما نقوم بتشغيل هذا الرمز.
يجب أن تتساءل عن سبب عدم إعطاء خطأ وقت التشغيل 13 لخطأ عدم تطابق النوع.
والسبب في ذلك هو أن Excel يعامل جميع الأرقام على أنها TRUE باستثناء الصفر. سيتم التعامل مع القيمة الصفرية على أنها FALSE. لهذا السبب حصلنا على النتيجة على أنها TRUE بدلاً من الخطأ.
انظر الآن سأقوم بتعيين قيمة عددية مع النص.
رمز:
Type_MisMatch_Example2 () خافت × مثل منطقي x = "4556a" MsgBox x End Sub
سيؤدي هذا بالتأكيد إلى ظهور خطأ وقت التشغيل 13: عدم تطابق النوع.
عدم تطابق نوع VBA - المثال رقم 3
الآن ، انظر إلى الكود أدناه لهذا المثال.
رمز:
Sub Type_MisMatch_Example4 () Dim x As Integer Dim y As String x = 45 y = "2019 Jan" MsgBox x + y End Sub
المتغير "x" هو نوع بيانات عدد صحيح و "y" هو نوع بيانات سلسلة.
X = 45 و y = 2019 يناير.
في مربع الرسالة ، أضفت x + y.
لكن هذا ليس الرمز المثالي لأننا لا نستطيع إضافة أرقام بنصوص سلسلة. سنواجه خطأ وقت التشغيل 13.
عدم تطابق نوع VBA - المثال رقم 4
حالات إستثنائية
هناك حالات يتسامح فيها برنامج Excel مع البيانات الخاطئة المخصصة لنوع البيانات المتغير. للحصول على مثال ، انظر إلى الكود أدناه.
رمز:
Type_MisMatch_Example3 () خافت × طويل خافت ص طويل × = 58.85 y = "85" MsgBox x & vbNewLine & y End Sub
تم الإعلان عن متغيرين هما "x" و "y".
بالنسبة لهذا المتغير ، يكون نوع البيانات المعين "طويل".
يقبل نوع البيانات الطويل الأعداد الصحيحة فقط ، وليس القيم العشرية.
لذا فإن الإدراك العام هو الحصول على خطأ وقت التشغيل 13 لخطأ عدم تطابق النوع.
لكن دعنا نرى ما يحدث عندما نقوم بتشغيل هذا الرمز.
رائع!!! حصلنا على القيم 59 و 85.
هذا لأن VBA ستحول القيمة العشرية 58.85 إلى أقرب قيمة عدد صحيح وعلى الرغم من أن الأرقام محاطة بعلامات اقتباس مزدوجة إلا أنها تتحول إلى قيمة عدد صحيح فقط.