Vba: كيفية الخروج من sub عند حدوث خطأ
يمكنك استخدام عبارة Exit Sub في VBA لإنهاء إجراء فرعي عند مواجهة خطأ.
إليك طريقة شائعة لاستخدام هذا البيان عمليًا:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
يحاول هذا الماكرو تحديدًا تقسيم كل قيمة في النطاق A1:A10 على القيمة المقابلة في النطاق B1:B10 .
في حالة حدوث خطأ (على سبيل المثال، نحاول القسمة على صفر)، فإن عبارة On Error GoTo تخبر VBA بالوصول إلى ErrorMessage ، والتي تطلب إنشاء مربع رسالة يخبر المستخدم بحدوث خطأ وإنهاء الإجراء الفرعي باستخدام Exist Sub . بيان.بيان.
يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.
مثال: كيفية وجود فرعي في حالة حدوث خطأ في VBA
لنفترض أن لدينا قائمة القيم التالية في العمودين A وB:
لنفترض الآن أننا أنشأنا الماكرو التالي لتقسيم كل قيمة في العمود A على القيمة المقابلة في العمود B وعرض النتائج في العمود C:
Sub DivideValues()
Dim i As Integer
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
End Sub
عندما نقوم بتشغيل هذا الماكرو، نتلقى الخطأ التالي:
لقد تلقينا هذا الخطأ لأنه في الصف الرابع من ورقة Excel حاولنا القسمة على صفر.
إذا أردنا ببساطة الخروج من الإجراء الفرعي عند حدوث هذا الخطأ، فيمكننا استخدام عبارة Exit Sub كما يلي:
Sub DivideValues()
Dim i As Integer
On Error GoTo ErrorMessage
For i = 1 To 10
Range(" C " & i) = Range(" A " & i) / Range(" B " & i)
Next i
Exit Sub
Error Message:
MsgBox “ An Error Occurred ”
Exit Sub
End Sub
عندما نقوم بتشغيل هذا الماكرو، فإن الإجراء الفرعي يقوم بجميع مشكلات التقسيم المحتملة قبل مواجهة خطأ، ثم يظهر مربع رسالة يخبرنا بحدوث خطأ وأن VBA موجود ببساطة في الإجراء الفرعي:
ملاحظة : يمكنك العثور على الوثائق الكاملة لبيان الخروج في VBA هنا .
مصادر إضافية
تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:
كيفية إنشاء مجلدات باستخدام VBA
كيفية حذف المجلدات باستخدام VBA
كيفية حذف الملفات باستخدام VBA