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 OccurredExit 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 OccurredExit Sub
    
End Sub

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

VBA على خطأ الإخراج تحت

ملاحظة : يمكنك العثور على الوثائق الكاملة لبيان الخروج في VBA هنا .

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:

كيفية إنشاء مجلدات باستخدام VBA
كيفية حذف المجلدات باستخدام VBA
كيفية حذف الملفات باستخدام VBA

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *