VBA عند الخطأ ، انتقل إلى 0 | كيفية استخدام خطأ GoTo 0 في Excel VBA؟

Excel VBA عند الخطأ انتقل إلى 0

VBA On Error GoTo 0 عبارة عن عبارة معالج أخطاء تُستخدم لتعطيل معالج الأخطاء الذي تم تمكينه في الإجراء. يشار إليه باسم "معطل معالج الأخطاء".

تعتبر معالجة الأخطاء في أي لغة من لغات البرمجة فئة رئيسية يجب على جميع المبرمجين فهمها. لغة برمجة VBA أيضًا ، ولدينا أيضًا تقنيات معالجة الأخطاء في لغة البرمجة هذه. "On Error Resume Next" يمكّن معالج الأخطاء و "On Error GoTo 0" سيعطل معالج الأخطاء الممكّن.

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

أي رمز سطر مكتوب بين هذه العبارات سوف يتجاهل أي نوع من الأخطاء التي حدثت في الإجراءات.

كيفية استخدام عبارة On Error GoTo 0؟

يمكنك تنزيل VBA On Error Goto 0 Excel Template هنا - VBA On Error Goto 0 Excel Template

للحصول على مثال ، انظر إلى الكود أدناه.

رمز:

 أوراق عمل فرعية On_ErrorExample1 () ("Sheet1"). حدد النطاق ("A1"). القيمة = 100 ورقة عمل ("Sheet2"). حدد النطاق ("A1"). القيمة = 100 End Sub 

ما يفعله الكود أعلاه هو أنه سيحدد أولاً ورقة العمل المسماة "Sheet1" وفي الخلية A1 ستدرج القيمة 100.

رمز:

أوراق العمل ("Sheet1"). حدد النطاق ("A1"). القيمة = 100

ثم ستحدد ورقة العمل المسماة "Sheet2" وتدرج نفس القيمة.

رمز:

أوراق العمل ("Sheet2"). حدد النطاق ("A1"). القيمة = 100

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

لا توجد أوراق تسمى "Sheet1" و "Sheet2" ، عند تشغيل الكود ، سيواجه خطأ مثل الخطأ أدناه.

نظرًا لعدم وجود ورقة تحمل اسم "الورقة 1" ، فقد واجهت خطأ "منخفض خارج النطاق". لمعالجة هذا الخطأ سأضيف عبارة معالج الخطأ "On Error Resume Next" في الجزء العلوي من الماكرو.

رمز:

 Sub On_ErrorExample1 () عند الخطأ ، استأنف أوراق العمل التالية ("Sheet1"). حدد النطاق ("A1"). القيمة = 100 ورقة عمل ("Sheet2"). حدد النطاق ("A1"). القيمة = 100 End Sub 

الآن قم بتشغيل الكود وشاهد ما سيحدث.

لن يعطي أي رسائل خطأ لأن عبارة معالج الأخطاء On Error Resume Next ممكّنة.

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

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

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

رمز:

 Sub On_ErrorExample1 () عند الخطأ ، استأنف أوراق العمل التالية ("Sheet1"). حدد النطاق ("A1"). القيمة = 100 في خطأ GoTo 0 Worksheets ("Sheet2"). حدد النطاق ("A1"). القيمة = 100 End Sub 

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

الآن إذا قمت بالضغط على المفتاح F8 بمجرد أن يقفز تنفيذ الكود إلى السطر التالي وسيتم تنفيذ مهمة الخط النشط. الآن الخط النشط (الخط الأصفر اللون) هو معالج الخطأ "On Error Resume Next" وسيتم تمكين معالج الأخطاء.

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

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

دون إعطاء أي نوع من الأخطاء ، فقد استأنف تنفيذ التعليمات البرمجية على الرغم من عدم وجود ورقة عمل "Sheet2" للاختيار منها. الآن اضغط F8 مرة أخرى.

نظرًا لعدم وجود ورقة 1 ، لا يمكن إدراج القيمة في الخلية A1 على أنها 500 ولكن ما تفعله هو أنها ستدرج القيمة 500 في الخلية A1 أي ورقة عمل نشطة. كانت الورقة النشطة الخاصة بي عندما أقوم بتنفيذ الرمز هي "Sheet3" ، لذلك يتم إدراج القيمة 100 في الخلية A1.

الآن السطر النشط من الكود هو " On Error GoTo 0 " ، بالضغط على المفتاح F8 سيتم تنفيذ هذه المهمة الخطية.

منذ تنفيذ "On Error GoTo 0" ، فقد أوقف عملية معالجة الأخطاء ويبدأ مرة أخرى في إظهار الأخطاء في حالة حدوث أي منها. اضغط على المفتاح F8 وشاهد الخطأ.

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

أشياء يجب تذكرها هنا

  • يجب استخدام كل من عند الخطأ ، استئناف التالي وعند الخطأ ، يجب استخدام GoTo 0 كـ "مُمكّن معالج الأخطاء " و " مُعطل معالج الأخطاء ".
  • أي سطر من الرموز بين هاتين العبارتين يواجه خطأ سيتم تجاهله.
  • إذا كانت هناك عبارة On Error GoTo 0 ، فسيتم تعطيل معالج خطأ الإجراء الفرعي بعد الخروج.

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