جدول المحتويات
في Microsoft Excel VBA ، تعتبر معالجة الأخطاء إحدى المهام الحاسمة. إذا كنت مبرمجًا ، فأنت تعلم أهمية معالجة الأخطاء لبناء تطبيق مثالي. يمكن لأي خطأ في بيان ما أن يعيق كود VBA الخاص بك بعدة طرق. لذلك ، يجب أن تكون حذرًا للتعامل مع هذه الأخطاء أثناء تنفيذ تعليمات برمجية لـ VBA. هناك الكثير من أخطاء وقت التشغيل التي يمكن أن تواجهها أثناء استخدام كود VBA في Excel. لحل أحدها ، نستخدم العبارة On Error Resume Next .
في هذا البرنامج التعليمي ، ستتعلم استخدام العبارة On Error Resume Next في Excel VBA. سيكون هذا البرنامج التعليمي في مكانه الصحيح مع الأمثلة المناسبة والرسوم التوضيحية المناسبة. لذا ، ابق معنا.
تنزيل Practice Workbook
VBA On Error Resume Next.xlsm
خطأ في التعامل مع Excel VBA
أثناء العمل مع Microsoft Excel VBA ، ستواجه الكثير من الأخطاء في الإجراء الفرعي الخاص بك. عندما لا يتمكن VBA من تنفيذ جملة ، فإنه يطرح خطأ وقت التشغيل.
يتعامل Excel تلقائيًا مع هذه الأخطاء ، لذلك عندما يظهر خطأ وقت التشغيل ، فإنه يعرض رسالة خطأ افتراضية مثل ما يلي:
الآن ، يمكنك التعامل معها بشكل مختلف مع بعض عبارات VBA. سأناقشها في أقسام لاحقة.
اقرأ المزيد: كيفية إصلاح #REF! خطأ في Excel (6 حلول)
في بيانات الخطأ في VBA
لمعالجة أخطاء وقت التشغيل ، نوجه Excel بعبارة On Error. تقررخطأ NAME في Excel (10 أمثلة)
💬 أشياء يجب تذكرها
عند الخطأ ، استئناف التالي لا يصلح الأخطاء. يتجاهل بشكل أساسي الخطأ وينتقل إلى العبارة التالية.
✎ يقوم Excel بتعويض أخطاء وقت التشغيل وتخزينها في كائن Err. عندما نستخدم العبارة On Error Resume Next ، فإنها تمسح خصائص كائن Err.
✎ يمكنك إيقاف تشغيل On Error Resume Next العبارة في كود VBA الخاص بك في Excel عن طريق إضافة العبارة On Error GoTo 0 .
الخاتمة
في الختام ، آمل أن يكون هذا البرنامج التعليمي قد زودك بجزء مفيد معرفة كيفية استخدام عند الخطأ ، استئناف التالي في Excel VBA. أوصيك بتعلم كل هذه التعليمات وتطبيقها على مجموعة البيانات الخاصة بك. قم بتنزيل كتيب التدريب وجربها بنفسك. أيضًا ، لا تتردد في تقديم ملاحظات في قسم التعليقات. ملاحظاتك القيمة تحفزنا على إنشاء برامج تعليمية مثل هذه.
لا تنس التحقق من موقعنا على الويب Exceldemy.com للتعرف على المشكلات والحلول المختلفة المتعلقة ببرنامج Excel.
استمر في تعلم طرق جديدة واستمر في النمو!
ما نوع العمليات التي نريد القيام بها بعد ذلك على الفور. بشكل أساسي ، نقوم بتعطيل هذه الأخطاء من خلال هذه الأنواع من معالجة الأخطاء.نستخدم ثلاثة أنواع من عبارات On Error (بناء الجملة) في Excel VBA.
- عند الخطأ ، انتقل إلى سطر
- عند الخطأ ، استأنف التالي
- عند الخطأ انتقل إلى 0
عند العثور على خطأ ، استخدم الأمر "عند الخطأ". لأنه إذا لم تستخدم إعلان عند الخطأ ، فستكون أخطاء وقت التشغيل هذه كارثية. سيُظهر موجه خطأ ويوقف التنفيذ.
عندما نستخدم عبارة عند الخطأ ، نقوم بتشغيل معالج خطأ "ممكّن". معالج الأخطاء "النشط" هو معالج ممكّن يبدأ عملية معالجة الأخطاء. إذا ظهر خطأ أثناء استخدام معالج الأخطاء ، فلن يتحمل معالج أخطاء الأسلوب الحالي الخطأ. بعد ذلك ، يعود عنصر التحكم إلى إجراء الاستدعاء.
إذا كانت عملية الاستدعاء تحتوي على معالج خطأ ممكّن ، فسيتم تشغيله لإدارة الخطأ. إذا كان معالج أخطاء نظام الاستدعاء الخاص بك يعمل بالمقابل ، فسيعيد التحكم عبر إجراءات الاتصال السابقة حتى يعثر على معالج خطأ ممكّن ولكنه غير نشط. إذا لم يتمكن من العثور على أي معالج خطأ ممكّن الخمول ، فهذا يعني أن الخطأ كارثي عند نقطة حدوثه.
في كل مرة يعيد معالج الخطأ السلطة إلى إجراء استدعاء ، يطور هذا الإجراء الإجراء الحالي. يبدأ التنفيذ فيالإجراء الحالي في اللحظة المحددة بواسطة العبارة استئناف عندما يعالج معالج الأخطاء الأخطاء في أي إجراء.
'On Error Resume Next' في VBA
الآن ، 1> عند الخطأ ، استئناف التالي تخبر العبارة VBA بتجاهل أي أسطر من التعليمات البرمجية بها أخطاء ، والمتابعة فورًا إلى السطر التالي من التعليمات البرمجية. بعد ذلك ، ستتخطى أكواد Excel VBA السطر أو الأسطر التي تحتوي على أخطاء فيها ، وتنتقل إلى التسلسل التالي من التعليمات البرمجية.
تفرض العبارة On Error Resume Next التنفيذ إلى استئناف مع الأمر الذي يتابع على الفور سطر الرموز الذي تسبب في حدوث خطأ وقت التشغيل. تسمح هذه العبارة بالتخطي للتنفيذ حتى إذا كان هناك خطأ في وقت التشغيل. إذا كنت تعتقد أن سطرًا معينًا من التعليمات البرمجية يمكن أن ينتج عنه خطأ ، فضع روتين معالجة الأخطاء هناك بدلاً من وضعه في مكان آخر ضمن الإجراء. تصبح العبارة On Error Resume Next خاملة عندما تستدعي التعليمات البرمجية إجراءً آخر. لذلك ، عندما تحتاج إلى معالجة خطأ متطابقة في هذا الروتين ، يجب عليك تشغيل أمر On Error Resume Next في كل نمط مسمى. يمكن التخطي ليس ضروريًا للتشغيل المزدهر للماكرو. لكن تذكر أنه قد يكون ضارًا إذا كنت تستخدمه بشكل غير صحيح لأنه قد يوفر نتائج غير مقصودة.
تذكر:
The On استئناف خطأ العبارة التالية لاإصلاح أخطاء وقت التشغيل. يتجاهل بشكل أساسي الأخطاء حيث سيتم استئناف تنفيذ VB من العبارة التي تولدت عن خطأ وقت التشغيل.
ألق نظرة على الكود التالي:
9190
حاولنا تقسيم 5 مع 0 و 1. لنقم بتشغيل الكود. سيظهر الإخراج التالي:
ينتج خطأ وقت التشغيل. لا يمكننا قسمة رقم على 0. عندما تقوم بتصحيح الكود ، سترى ما يلي:
عندما يجد برنامج VB خطأ ، فإنه يوقف الإجراء على الفور. لا يتم تنفيذ السطر التالي.
الآن ، دعنا ننفذ عبارة On Error Resume Next قبل بيان الخطأ:
9993
بعد تشغيل الكود ، راجع ما يلي:
كما ترى ، يتجاهل VBA السطر الذي ينتج الخطأ وينتقل فورًا إلى السطر التالي من التعليمات البرمجية. بهذه الطريقة ، يمكنك استخدام العبارة On Error Resume Next لمعالجة الخطأ في Excel VBA.
أمثلة 'On Error Resume Next' في VBA
In في الأقسام التالية ، سأقدم لك مثالين على عبارة On Error Resume Next والتي يمكنك تنفيذها في ورقة عمل Excel باستخدام VBA. أوصي بأن تتعلم كل هذه الأشياء وتطبقها في كتابك التدريبي. سيؤدي بالتأكيد إلى زيادة معرفتك ببرنامج Excel.
1. بيان "عند الخطأ ، استئناف التالي" لإخفاء أوراق العمل
الآن ، في هذا المثال ، سأعرض لك رمز VBA الذيسيخفي جميع أوراق العمل الخاصة بمصنفك النشط.
ألق نظرة على لقطة الشاشة التالية:
هنا ، لدينا أربع أوراق عمل. سنخفيهم جميعًا باستخدام رمز فبا التالي:
6870
عند تنفيذ التعليمات البرمجية التالية ، سترى خطأ وقت التشغيل التالي:
يُظهر Excel هذا الخطأ لأنه لا يمكنك إخفاء جميع الأوراق في مصنف. لذا ، عليك تجاهل الخطأ. للقيام بذلك ، يجب عليك تنفيذ جملة On Error Resume Next في سطر التعليمات البرمجية الخاص بك.
3092
بعد الانتهاء من تنفيذ رمز VBA ، سترى الإخراج التالي:
في النهاية ، لن ترى أي أخطاء بعد التنفيذ. لذلك ، عملت عبارة On Error Resume Next الخاصة بنا بشكل جيد في كود VBA.
اقرأ المزيد: أخطاء في Excel ومعناها (15 خطأ مختلف)
2. وظيفة VLOOKUP مع "On Error Resume Next" في VBA
في هذا المثال ، سأعرض مثالاً على وظيفة VLOOKUP في VBA . الآن ، يتضمن رمز VBA هذا أيضًا العبارة On Error Resume Next .
ألق نظرة على لقطة الشاشة التالية:
هنا ، يمكنك رؤية أسماء بعض الأشخاص وأعمارهم. في الجدول المجاور ، سنستخدم VLOOKUP للعثور على اسم الشخص وعمره.
اكتب الكود التالي للقيام بذلك:
6833
الآن ، قم بتشغيل الماكرو . سترى الخطأ التالي:
الآن ، هذا هو وقت التشغيلخطأ. لماذا يحدث ذلك؟ ألقِ نظرة على مجموعة البيانات مرة أخرى:
كما ترى ، لا توجد بيانات عن "Aaron" و "Emma". لهذا السبب ينفذ فقط VLOOKUP للإدخال الأول. بعد ذلك ، يوقف الإعدام. الآن ، إذا كنت تريد تجاهل الخطأ والمتابعة للعثور على بقية الأعمار ، فاستخدم العبارة On Error Resume Next .
3462
بعد تشغيل كود VBA ، سترى الإخراج التالي:
كما ترى ، من خلال تطبيق الأمر On Error Resume Next ، تجاهلنا الخطأ ووجدنا بقية الأشخاص ' الأعمار. لم يعثر رمز VBA الخاص بنا على أي بيانات عن آرون وإيما. لهذا السبب تجاهل هذه القيم وأعاد باقي القيم في ورقة عمل Excel.
قراءة المزيد: [ثابت] وجد Excel مشكلة في واحد أو أكثر من مراجع الصيغ في ورقة العمل هذه
قم بإيقاف تشغيل "On Error Resume Next" باستخدام Excel VBA
الآن ، قد تكون في موقف تريد فيه تجاهل الأخطاء لجزء معين من كود VBA. تذكر ، إذا كنت تستخدم عبارة On Error Resume Next في رمز VBA ، فسوف تتخطى جميع الأخطاء بعد ذلك. الآن ، إذا كنت ترغب في إيقاف تشغيل ذلك وتمكين معالجة الأخطاء لشريحة أخرى ، فاستخدم On Error GoTo 0 . سيمكن معالجة الأخطاء مرة أخرى.
الاستخدام العام:
Sub error_handling ()
لتجاهل الأخطاء
عند الخطأ ، استئناف التالي
// أسطر الرموز
إلىتشغيل معالجة الأخطاء
عند الخطأ انتقل إلى 0
// أسطر الرموز
End sub
إلقاء نظرة على رمز VBA التالي:
3087
استخدمنا الكود سابقًا لوظيفة VLOOKUP . تمت إضافة جزء إضافي من التعليمات البرمجية هنا لإثباتك. سيتجاهل الكود الخاص بنا الأخطاء أثناء تنفيذ VLOOKUP ولكنه سينشط معالجة الأخطاء بعد العبارة On Error GoTo 0 .
اقرأ المزيد: Excel VBA: أوقف تشغيل "On Error Resume Next"
VBA 'On Error GoTo'
ناقشت سابقًا معالجة الأخطاء باستخدام طريقة On Error. كانت مقالتنا بأكملها تدور حول عند الخطأ ، استئناف التالي. الآن ، هناك نوعان من معالجة الأخطاء التي سأناقشها في الأقسام التالية.
1. VBA On Error GoTo 0
عند الخطأ ، انتقل إلى 0 البيان هو إعداد Excel يحمل في ثناياه عوامل إذا لم يكن لدى الرموز الخاصة بك معالج خطأ فيها. إنه يعني بشكل أساسي أنه عندما يجد VBA خطأ في عند الخطأ GoTo 0 ، فإنه سيتوقف عن تشغيل الكود ويظهر مربع رسالة الخطأ التقليدي.
عند الخطأ انتقل إلى 0 البيان يقوم بشكل أساسي بإيقاف تشغيل معالجة الأخطاء في الإجراء الحالي. لا يُعرّف السطر 0 على أنه بداية رمز معالجة الأخطاء ، حتى إذا كانت الطريقة تتضمن سطرًا مرقمًا 0.
ألق نظرة على الكود التالي:
5178
لدينا سبق وأظهر لك هذا الرمز. يخفي هذا الرمز جميع أوراق العمل بشكل أساسيفي المصنف الحالي الخاص بك. الآن ، لدي بالفعل جزء إضافي من التعليمات البرمجية مع On Error GoTo 0 لإظهار الخطأ. إذا قمت بتشغيل التعليمات البرمجية ، فسترى ما يلي:
يظهر هذا الخطأ لأنه لا يمكننا الحصول على أوراق بنفس الاسم في المصنف النشط.
2. VBA On Error GoTo line
الآن ، يمكنك أيضًا توجيه Excel لتشغيل مقطع آخر من التعليمات البرمجية إذا عثر على أي خطأ باستخدام On Error GoTo line . يخبر Excel بتنفيذ شيء ما بعد العثور على خطأ.
وسيطة الخط هي أي علامة سطر أو رقم سطر. إذا تسبب الكود الخاص بنا في حدوث أي خطأ في وقت التشغيل ، فسوف ينتقل إلى السطر ، مما يتسبب في تنشيط معالج الأخطاء في التنفيذ. تذكر ، يجب أن يكون السطر المحدد في الإجراء المحدد مثل عبارة On Error ؛ وإلا فإنه سوف يسبب خطأ في الترجمة.
ألق نظرة على الكود التالي:
2284
لقد رأيت الكود في المثال السابق. عندما استخدمنا في خطأ GoTo 0 ، تسبب في خطأ. ولكن ، هنا استبدلنا ذلك بعبارة On Error GoTo line .
الآن ، قم بتشغيل الكود وسترى ما يلي:
كما ترى ، لا يظهر لنا مربع حوار الخطأ القياسي. بدلاً من ذلك ، يعرض مربع الرسالة المخصص الذي أنشأناه في المقطع error_handler . عندما يعثر Excel على أي خطأ ، فإنه يقفز إلى المقطع error_handler ويظهر لنا مربع الرسالة.
استخدمنا أيضًا Exit Sub في الإجراء.إذا لم تكن هناك ورقة باسم " VLOOKUP " ، فسيعيد رمز VBA تسمية الورقة النشطة. بعد ذلك ، يتعين علينا إنهاء التنفيذ هنا لأننا لسنا بحاجة إلى الاستمرار في معالج الأخطاء وعرض مربع الرسالة.
VBA 'On Error' لا يعمل في Excel
في بعض الأحيان ، بغض النظر عن مدى صعوبة المحاولة ، لن تعمل طريقة On Error. في السابق ، قمنا بتطبيق طريقة On Error للتعامل مع الأخطاء. ولكن ، في بعض الأحيان ستظهر أخطاء حتى إذا كنت تستخدم في استئناف الخطأ التالي أو عند الخطأ انتقل إلى 0 . قد تكون هناك عدة أسباب في شفرتك يجب عليك إصلاحها. لن أريكم ذلك.
السبب الأساسي لـ VBA ' عند الخطأ' عدم العمل في Excel هو تشغيل خيار "Break on All Errors" في Excel.
اتبع هذه الخطوات لحل ذلك:
📌 الخطوات
- أولاً ، اضغط على Alt + F11 على لوحة المفاتيح لديك افتح محرر VBA.
- الآن ، انقر فوق Tools & gt؛ الخيارات.
- بعد ذلك ، انقر فوق علامة التبويب عام في مربع الحوار خيارات مربع.
- هنا ، يمكنك أن ترى ، " فاصل على كافة الأخطاء " محدد بالفعل. يمنعك بشكل أساسي من معالجة الأخطاء.
- لتغييره ، حدد الخيار " كسر الأخطاء غير المعالجة " وانقر على موافق .
آمل أن يتم إصلاح مشكلتك الخاصة بـ VBA "On Error" لا تعمل في Excel.
اقرأ المزيد: الأسباب والتصحيحات