معالجة خطأ VBA | دليل لمعالجة الأخطاء في Excel VBA

معالجة أخطاء Excel VBA

في VBA عندما نعمل مع الأكواد ، قد نواجه العديد من أنواع الأخطاء المختلفة ، وتُعرف كيفية استكشاف هذه الأخطاء وإصلاحها باسم معالجة الأخطاء ، والآن يمكن أن يكون هناك بعض الأخطاء التي تحدث في بناء الجملة والتي تميزها بنفسها ولكن عندما يكون هناك بعض الأخطاء خارج النطاق أو شيء غير موجود ، يمنحنا برنامج Excel نافذة منبثقة لنفسه ، من المهم معرفة رمز الخطأ الخاص بأي خطأ من أجل تحديد الخطأ في الكود.

في Excel VBA أثناء تنفيذ أي مجموعة من الرموز ، نحصل على نوع من الأخطاء. بعض هذه الأخطاء هي أخطاء في بناء الجملة وبعضها أخطاء غير قابلة للتنفيذ. الخطأ في بناء الجملة عندما يتم تمييزه من قبل المستخدم باللون الأحمر من خلال التفوق نفسه. ولكن عندما يكون هناك أي نوع آخر من خطأ وقت التشغيل ، فكيف نتعامل معه وكيف نتجاوز هذا هو ما سنغطيه في هذه المقالة.

بصرف النظر عن أخطاء بناء الجملة ، يجب معالجة أخطاء وقت التشغيل الأخرى أثناء تنفيذ أي مجموعة من الرموز. أولاً ، اسمحوا لي أن أقدم مثالاً على كيفية حدوث خطأ وقت التشغيل الآخر. ألق نظرة على الكود أدناه ،

هذا رمز عينة عند تنفيذه سيعيد ما هو مكتوب في وظيفة msgbox. ولكن كما يمكننا أن نرى أنه في السطر الثاني من الكود هناك 4/0 وهو أمر غير ممكن من الناحية الرياضية ، لذلك سيعيد خطأ وقت التشغيل. دعونا ننفذ الكود أعلاه ونرى الخطأ الذي سنحصل عليه.

هذا هو الخطأ الذي حصلنا عليه أثناء تنفيذ الكود المحدد. الآن كيف نتعامل مع هذا الخطأ يتم عن طريق معالجة الأخطاء.

هناك طريقتان للتعامل مع الأخطاء وهما:

  1. عند Error Goto و
  2. خطأ في الصفحة، إذهب للتالي.

خاطئة

كما هو موضح أعلاه ، نحصل على العديد من أنواع الأخطاء في VBA ، بعضها بناء جملة وبعضها وقت التشغيل. تم تمييز الأخطاء النحوية بالفعل باللون الأحمر ، على سبيل المثال ، راجع لقطة الشاشة أدناه ،

بينما الآخر هو تشغيل أخطاء وقت. بشكل أساسي ، سيقوم برنامج Excel بالأشياء الثلاثة التالية ، إما أنه سيظهر خطأ أو يتجاهل هذا الخطأ أو سيعرض مجموعة معينة من التعليمات. لأداء مثل هذه المهام نحتاج إلى إعطاء التعليمات وهذا ما يسمى معالجة الأخطاء.

كيفية التعامل مع الأخطاء في كود VBA؟

يمكنك تنزيل قالب Excel لمعالجة أخطاء VBA من هنا - قالب Excel لمعالجة خطأ VBA

مثال 1

في المثال الأول ، دعونا نأخذ الكود الأول الذي أخذناه كمثال. في المثال أعلاه ، رأينا أن الكود يعطي خطأ وقت التشغيل في وظيفة msgbox الثانية.

اكتب الكود التالي بعد فتح الوظيفة الفرعية ،

رمز:

 العينة الفرعية () عند الخطأ ، استأنف الأمر التالي MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

الآن عندما ننفذ الكود أعلاه ، نرى أن سطر الكود الذي يحتوي على الخطأ لم يتم تنفيذه. يتخطى Excel هذا السطر ويستأنف في السطر التالي.

هناك طريقة أخرى للتعامل مع الخطأ وهي عبارة vba Goto ، فنحن نقدم Excel وجهة للذهاب إليها عندما تجد خطأ. بدلاً من رمز معالجة الخطأ السابق ، أدخلنا ، اكتب الكود التالي ،

رمز:

 العينة الفرعية () عند الخطأ GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 End Sub 

نحن نعطي برنامج excel Az كوجهة نذهب إليها إذا وجدت خطأً. الآن بعد كتابة msgbox ، اكتب رمزًا آخر على النحو التالي ،

رمز:

 العينة الفرعية () عند الخطأ GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 تم الانتهاء: خروج Sub 

الآن نحن بحاجة إلى تحديد الوجهة az على أنها ما يجب أن تفعله عندما يعثر Excel على خطأ في الكود.

رمز:

 نموذج فرعي () عند الخطأ GoTo az MsgBox 4/2 MsgBox 4/0 MsgBox 4/1 Done: Exit Sub az: MsgBox "This is a error" & Err.Description End Sub 

الآن عندما نقوم بتشغيل هذا الرمز ، نرى النتيجة معروضة.

هذه هي النتيجة الأولى لمربع msg ، وكما نعلم أن لدينا خطأ في السطر التالي من الكود ، فلنرى النتيجة التي سيعطيها برنامج Excel.

يساعدنا الوصف التالي في الكود على إظهار بالضبط ما حدث الخطأ في الكود الخاص بنا.

المثال رقم 2

لقد تعلمنا كيفية التعامل مع الأخطاء في رموزنا. دعونا نلقي نظرة على مثال آخر لكيفية التعامل مع الأخطاء. اعتبر الكود التالي مثالنا الثاني.

لدينا خطأ مشابه إلى حد ما من المثال 1. الخطأ في السطر d = i / b. الآن سنتعامل مع هذه الأخطاء باستخدام الطريقتين الموضحتين أعلاه.

اكتب الكود التالي بعد فتح الوظيفة الفرعية ،

رمز:

 العينة الفرعية 2 () عند استئناف الخطأ التالي bx Dim i كعدد صحيح ، b كعدد صحيح ، c كعدد صحيح ، d كعدد صحيح i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d End Sub 

الآن عندما ننفذ الكود الخاص بنا ، يمكننا أن نرى أنه يتجاهل السطر الثاني ويعرض فقط قيمة C.

كان معالج الخطأ أعلاه عبارة عن سيرة ذاتية تالية ، والآن سنستخدم Go to حيث سنخبر Excel عن وجهة للذهاب عندما تواجه خطأ. اكتب الكود التالي ،

رمز:

 العينة الفرعية 2 () عند الخطأ GoTo bx Dim i As Integer، b As Integer، c As Integer، d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d

bx هي وجهة تُعطى عندما تواجه خطأً بعد كتابة msgbox D للشفرة التالية ،

رمز:

 العينة الفرعية 2 () عند الخطأ GoTo bx Dim i As Integer، b As Integer، c As Integer، d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub 

نحتاج الآن إلى تحديد الوجهة Bx ، ما يجب أن تفعله عندما تواجه خطأً ، لذا اكتب الكود التالي ،

رمز:

 العينة الفرعية 2 () عند الخطأ GoTo bx Dim i As Integer، b As Integer، c As Integer، d As Integer i = 2 b = 0 c = i + b MsgBox cd = i / b MsgBox d DOne: Exit Sub bx: MsgBox "هذا خطأ آخر" & Err.Description End Sub 

الآن عندما ننفذ الكود ، يمكننا أن نرى أن Excel يعطينا أولاً قيمة C.

الآن في خطوة أخرى ، ستعطينا المطالبة التي قدمناها لها عندما يواجه خطأ.

هذه هي الطريقة التي نتعامل بها مع أخطاء وقت التشغيل العادية في Excel VBA.

أشياء للذكرى

هناك بعض الأشياء التي يجب أن نتذكرها حول معالجة الأخطاء:

  1. عند الخطأ ، استئناف التالي يتجاهل الخطأ.
  2. عند الخطأ GoTo يعطي التفوق عن وجهة عندما يواجه خطأ.
  3. يتم استخدام الوصف لإظهار الخطأ الدقيق الذي حدث للمستخدم.

$config[zx-auto] not found$config[zx-overlay] not found