VBA Exit Sub | قم بإنهاء الإجراء الفرعي لـ VBA إذا لم يتم استيفاء الشروط

إجراء فرعي للخروج من Excel VBA

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

دعونا نبني هذا بعبارات بسيطة.

 Sub MacroName () '...' بعض التعليمات البرمجية هنا '... Exit Sub' قم بإنهاء Sub دون تنفيذ أسطر أخرى من التعليمات البرمجية أدناه '...' سيتم تجاهل هذا الرمز '... End Sub 

أمثلة

يمكنك تنزيل VBA Exit Sub Excel Template هنا - VBA Exit Sub Excel Template

مثال 1

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

رمز:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 Cells (k، 1) .Value = k Next k End Sub 

سيقوم الكود أعلاه بإدراج الأرقام التسلسلية من 1 إلى 10 في الخلايا من A1 إلى A10.

الآن أريد إدخال 5 أرقام متسلسلة فقط وبمجرد أن تصبح قيمة المتغير "k" 6 ، أريد الخروج من الفرع الفرعي.

لهذا ، سيتعين علي إضافة الاختبار المنطقي في excel كـ IF k = 6 ثم Exit Sub .

رمز:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 إذا k = 6 ثم اخرج من Sub 'بمجرد أن تصبح قيمة k 6 ستتجاهل جميع الرموز وتخرج من الخلايا (k، 1) .Value = k Next k End الفرعية 

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

اعتبارًا من الآن ، قيمة k هي صفر.

لتغيير قيمة k إلى 1 ، اضغط على مفتاح F8 مرة أخرى.

لذا فإن قيمة k هي 1 يستمر تشغيل الكود الخاص بنا وسوف يقوم بإدراج 1 في الخلية A1. على هذا النحو ، استمر في تشغيل الحلقة حتى تصبح قيمة k 6.

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

كما نرى فقد أبرزت كلمة "Exit Sub" . عند الضغط على المفتاح F8 ، سيتم الخروج من الإجراء الفرعي دون الانتقال إلى كلمة "End Sub" .

المثال رقم 2 - عند الخطأ ، اخرج من الإجراء الفرعي

يمكننا أيضًا الخروج من الإجراء الفرعي عندما نحصل على قيم الخطأ. على سبيل المثال ، ضع في اعتبارك البيانات أدناه لقسمة الرقم 1 على الرقم 2.

يوجد أدناه الرمز للحصول على قسمة رقمين.

رمز:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 Cells (k، 3) .Value = Cells (k، 1) .Value / Cells (k، 2) .Value Next k End Sub 

كما نعلم لا يمكننا قسمة أي عدد على صفر. لذلك إذا حاولنا القيام بذلك ، فسنحصل على الخطأ مثل Run Time Error '11': القسمة على الصفر.

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

رمز:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k، 3) .Value = Cells (k، 1) .Value / Cells (k، 2) .Value Next k ErrorHandler: Exit Sub End Sub 

في المثال أعلاه ، أشرت إلى العبارة "On Error Goto ErrorHandler". هنا كلمة ErrorHandler هي التسمية التي قمت بتعيينها. إذا كان بإمكانك رؤية الجزء السفلي من الكود ، فقد ذكرت التسمية باسم

ErrorHandler: الخروج من Sub 

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

الآن سأقوم بتشغيل الكود ، وسوف يحسب القسمة حتى يجد خطأ.

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

رمز:

 Sub Exit_Example2 () خافت k بطول k = 2 إلى 9 عند الخطأ انتقل إلى خطأ Handler Cells (k، 3) .Value = Cells (k، 1) .Value / Cells (k، 2) .Value Next k ErrorHandler: MsgBox " حدث خطأ وكان الخطأ: "& vbNewLine & Err.Description إنهاء Sub End Sub 

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

هذه طريقة أكثر موثوقية للخروج من الإجراء الفرعي.


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