VBA On Error GoTo | أنواع عبارات الخطأ في VBA

Excel VBA On Error GoTo

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

يحتوي هذا البيان على ثلاثة أنواع من البيانات وفيما يلي القائمة.

  1. عند الخطأ ، انتقل إلى 0
  2. عند الخطأ ، انتقل إلى [التسمية]
  3. خطأ في الصفحة، إذهب للتالي

في هذه المقالة ، سنرى كيف يتم استخدام هذه العبارات الثلاثة في ترميز VBA للتعامل مع أي نوع من الأخطاء.

كيفية استخدام VBA في بيانات الخطأ؟

يمكنك تنزيل نموذج بيان VBA On Error GoTo من هنا - قالب بيان VBA On Error GoTo

# 1 - عند الخطأ ، استأنف التالي

كما تقول العبارة نفسها "عند الخطأ ، استئناف التالي" تعني متى حدث الخطأ في الكود "استئناف" السطر التالي من الكود عن طريق تجاهل رمز سطر الخطأ. الآن ألق نظرة على الكود أدناه.

في الكود أدناه ، أشرت إلى أسماء ورقة العمل وطلبت إدخال القيمة في الخلية الأولى باسم "اختبار الخطأ".

رمز:

 أوراق عمل فرعية On_Error_Resume_Next () ("Ws 1"). حدد النطاق ("A1"). القيمة = أوراق عمل "اختبار الخطأ" ("Ws 2"). حدد النطاق ("A1"). القيمة = أوراق عمل "اختبار الخطأ" ( "Ws 3"). حدد النطاق ("A1"). القيمة = أوراق عمل "اختبار الخطأ" ("Ws 4"). حدد النطاق ("A1"). القيمة = "اختبار الخطأ" End Sub 

الآن لدي أوراق العمل أدناه في كتابي.

  • سأقوم بتشغيل الكود وأرى ما سيحدث.

  • حصلنا على الخطأ "Subscript Out of Range" ، انقر فوق "تصحيح" لمعرفة السطر الذي حصلنا فيه على الخطأ.

  • لذلك في السطر "أوراق العمل (" Ws 3 "). حدد" حصلنا على خطأ ، وذلك لأنه لا يوجد في مصنفنا ورقة عمل تسمى "Ws 3" ، لذلك واجهنا خطأ.

في مثل هذه الحالات ، قد نرغب في تجاهل الخطأ واستئناف تنفيذ الكود إلى السطر التالي ، وهذا هو المكان الذي يظهر فيه معالج الخطأ "عند الخطأ ، استئناف التالي" في الصورة.

  • كل ما نحتاج إلى القيام به هو إضافة السطر "عند الخطأ ، استئناف التالي" في بداية الماكرو.

قم الآن بتنفيذ هذا الرمز ولن يظهر أي رسالة خطأ لأنه كلما واجه الرمز خطأً ، فإنه سيتجاهل الخطأ ويستأنف إلى السطر التالي من التعليمات البرمجية.

# 2 - عند الخطأ انتقل إلى 0

هذا ليس معالج أخطاء بدلاً من تمكين رسائل الخطأ بعد تعطيل رسالة الخطأ باستخدام العبارة "On Error Resume Next".

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

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

  • انظر إلى الصورة أدناه لاستخدام عبارة "On Error GoTo 0".

حتى الآن سيتم تجاهل الأخطاء حتى يعثر الرمز على الخطأ ، قم بإخطار عامل التمكين "On Error GoTo 0". بمجرد أن ينفذ هذا السطر من التعليمات البرمجية وحدات الماكرو إلى وضعها الطبيعي ويبدأ في إلقاء رسائل الخطأ كالمعتاد.

# 3 - عند الخطأ GoTo Label

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

في هذه الطريقة ، تعني كلمة "Label" أنه يمكننا إعطاء أي اسم لهذه التسمية ، كما يجب إعطاء نفس التسمية في السطر المطلوب من الكود أيضًا.

على سبيل المثال ، انظر إلى نفس الرمز من المثال أعلاه.

الآن دعنا ننفذ الكود سطرًا سطرًا بالضغط على مفتاح الوظيفة F8.

الآن سيقرأ الماكرو بيان معالج الخطأ ، اضغط على المفتاح F8 لتنفيذ أول رمز ورقة عمل 2.

الآن الماكرو على وشك تنفيذ رمز ورقة العمل الثالث غير الموجود في المصنف ، اضغط على المفتاح F8 ، وشاهد ما يحدث.

نظرًا لأن الماكرو واجه خطأً في السطر أدناه من التعليمات البرمجية ، فقد قفز إلى عنوان معالج الأخطاء "ErrorMessage" والذي تم وصفه من خلال عبارة "On Error GoTo [Label]".

الآن سيعرض مربع الرسالة الرسالة "حدث خطأ وإنهاء الماكرو".

أشياء للذكرى

  • سيمكن VBA On Error GoTo 0 إعلام الخطأ مرة أخرى ، لذلك لا تنس إضافة هذا بعد توفير معالج الأخطاء.
  • يجب أن تكون متأكدًا تمامًا من أي جزء من الكود تريد تجاهل الخطأ فيه ، لذلك قم بإرفاق معالج الخطأ فقط لتلك الكتلة من التعليمات البرمجية.

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