عودة VBA | كيفية استخدام بيان إرجاع GoSub في VBA؟

بيان إرجاع Excel VBA

يعد VBA رائعًا وينقذ حياة أولئك الذين يعرفون الدخول والخروج من ترميز VBA ، ويمكنه توفير الكثير من الوقت في مكان العمل لدينا. في مقالاتنا السابقة ، ناقشنا العديد من الأشياء والمفاهيم الخاصة بعودة VBA. أحد هذه المفاهيم هو عبارة GoSub Return. في هذه المقالة سوف نقدم لكم هذه المفاهيم.

ما هو بيان عودة GoSub؟

العبارة "Go Sub" تعني أنها ستنتقل إلى سطر الرمز المشار إليه بواسطة التسمية من خلال الاسم وتؤدي مجموعة محددة من المهمة حتى تعثر على العبارة "Return".

يشبه هذا بيان معالج الأخطاء "GoTo Label" ولكن ما يفعله "GoSub Return" هو أنه سيعود إلى السطر التالي من التعليمات البرمجية بدلاً من المتابعة من اسم التصنيف.

يوجد أدناه بناء جملة VBA GoSub Return.

GoSub [Label Name] ... .. سطر الشفرة [Label Name]: ... .. سطر من التعليمات البرمجية لأداء المهمة

أعلم أنه من الصعب أن نفهم من قراءة النحو ولكن باستخدام المثال قد تكون قادرًا على فهم المفهوم.

قبل أن أذهب إلى الأمثلة ، اسمحوا لي أن أقول بعض الأشياء عن هذا البيان.

  • تقوم عبارة GoSub باستدعاء الروتين الفرعي في vba والذي يتم تسميته بواسطة ملصق داخل نفس الروتين أو الوظيفة.
  • يجب أن يكون كل من GoSub و Return ضمن نفس الإجراء ، ولا يمكننا استدعاء ماكرو روتين فرعي آخر هنا.
  • يمكنك تقديم أي عدد من عبارات GoSub Return.
  • ستستمر عبارة الإرجاع في تنفيذ التعليمات البرمجية من حيث توقفت قبل أن تنتقل إلى الإجراء الفرعي المشار إليه باسم التصنيف.

كيفية استخدام GoSub Return Statement في VBA؟

يمكنك تنزيل نموذج VBA Return Excel هنا - نموذج VBA Return Excel

مثال 1

لفهم استخدام هذا البيان ، انظر إلى الكود أدناه أولاً ، وسأشرح لك لاحقًا الرمز سطراً بسطر.

رمز:

 Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name 3 خروج Sub Macro1: MsgBox "قيد التشغيل الآن Macro1" Return Macro2: MsgBox "قيد التشغيل الآن Macro2" إرجاع Macro3: MsgBox "يعمل الآن Sub Macro3" Return End 

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

الآن اضغط على المفتاح F8 مرة أخرى للانتقال إلى السطر التالي.

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

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

الآن بالضغط على مفتاح F8 ، سيتم تنفيذ مهمة الماكرو "Macro1" لإظهار النتيجة في مربع الرسالة.

انقر فوق موافق في مربع الرسالة للعودة إلى نافذة الترميز.

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

آخر مرة نفذت فيها الكود "GoSub Macro1" ونفذت مهمة اسم التسمية "Macro1" لأننا ذكرنا عبارة "Return" فقد عادت إلى السطر التالي من الكود ، أي

"GoSub Macro2"

ما يقوله البيان هو ، "go-to label المسمى Macro2". في ما يلي بالنسبة للتسمية "Macro2" ، أشرت إلى مجموعة محددة من المهام.

الآن سوف نحصل على المهمة الفرعية الثانية لإظهار القيمة في مربع الرسالة.

انقر الآن على "موافق" وسوف يبرز عبارة "Return" الثانية.

الآن عند النقر فوق مفتاح F8 ، سيعود إلى السطر التالي من التعليمات البرمجية قبل أن يعود إلى التسمية "Macro2". الآن سيتم تحديد "GoSub Macro3".

الآن سوف تنتقل إلى تسمية "Macro3" ، اضغط على مفتاح F8.

الآن سيتم تنفيذ مهمة التسمية الثالثة.

انقر الآن على "موافق" ، وسوف يبرز عبارة "Return".

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

لا ، سيتم الخروج من الروتين الفرعي. من الضروري إضافة كلمة "Exit Sub" وإلا سيواجه خطأ.

المثال رقم 2

ألقِ نظرة الآن على مثال آخر لاستخدام عبارة GoSub Return.

رمز:

 Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (موجه: = "الرجاء إدخال الرقم هنا" ، العنوان: = "رقم القسم") إذا كان Num> 10 ثم GoSub Division Else MsgBox "الرقم أقل من 10" خروج نهاية فرعية في حالة الخروج من القسم الفرعي: MsgBox Num / 5 Return End Sub 

سيطلب منك هذا الرمز إدخال الرقم> 10 ، إذا كان الرقم> 10 ، فسيقوم بمهمة تقسيمه على 5 (اسم التسمية "قسم") وإلا ستظهر الرسالة على أنها "الرقم هو" اقل من 10".

أشياء للذكرى

  • يجب أن يكون اسم التصنيف هو نفسه في عبارة GoSub و Return ، ويجب أن يتبع اسم التسمية في عبارة الإرجاع بنقطتين (:).
  • استخدم دائمًا Exit Sub في VBA بعد الانتهاء من جميع عبارات الإرجاع لتجنب رسالة الخطأ.

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