روتين فرعي لـ Excel VBA: كيفية استدعاء Sub في VBA مع مثال
⚡ ملخص ذكي
تُجمّع الإجراءات الفرعية في Excel VBA مجموعة من التعليمات البرمجية التي تُنفّذ مهمةً دون إرجاع قيمة. تتناول هذه الصفحة قواعد التسمية، وبنية الإجراءات الفرعية، واستدعاء إجراء فرعي من زر أمر، وكيف يختلف الإجراء الفرعي عن الدالة.

ما هو الروتين الفرعي في VBA؟
A روتين فرعي في VBA عبارة عن جزء من التعليمات البرمجية ينفذ مهمة محددة موصوفة في التعليمات البرمجية ولكنه لا يُرجع نتيجة أو قيمة. تُستخدم الإجراءات الفرعية لتقسيم أجزاء كبيرة من التعليمات البرمجية إلى أجزاء صغيرة يمكن التحكم فيها. يمكن استدعاء الإجراءات الفرعية عدة مرات من أي مكان في البرنامج.
لنفترض أنك قمت بإنشاء واجهة مستخدم تحتوي على مربعات نصية لقبول بيانات إدخال المستخدم. يمكنك إنشاء برنامج فرعي يقوم بمسح محتويات مربعات النص. يعد البرنامج الفرعي لاستدعاء VBA مناسبًا في مثل هذا السيناريو لأنك لا تريد إرجاع أي نتائج.
لماذا استخدام الروتينات الفرعية
- قم بتقسيم الكود إلى كود صغير يمكن التحكم فيه:يحتوي برنامج الكمبيوتر العادي على آلاف وآلاف من أسطر التعليمات البرمجية المصدرية. وهذا يزيد من التعقيد. وتساعد البرامج الفرعية في حل هذه المشكلة من خلال تقسيم البرنامج إلى أجزاء صغيرة قابلة للإدارة من التعليمات البرمجية.
- Code إعادة الاستخداملنفترض أن لديك برنامجًا يحتاج إلى الوصول إلى قاعدة البيانات، فستحتاج جميع النوافذ تقريبًا في البرنامج إلى التفاعل مع قاعدة البيانات. وبدلاً من كتابة كود منفصل لهذه النوافذ، يمكنك إنشاء دالة تتعامل مع جميع تفاعلات قاعدة البيانات. ويمكنك بعد ذلك استدعاؤها من أي نافذة تريدها.
- يتم توثيق الإجراءات الفرعية والوظائف ذاتيًا. لنفترض أن لديك دالة accountLoanInterest وأخرى تقول ConnectToDatabase. بمجرد النظر إلى اسم الروتين الفرعي/الوظيفة، سيكون المبرمج قادرًا على معرفة ما يفعله البرنامج.
قبل كتابة الاسم، يتوقع المترجم أن يتبع الاسم مجموعة قصيرة من القواعد.
قواعد تسمية الإجراءات الفرعية والوظائف
لاستخدام الإجراءات الفرعية والوظائف، هناك مجموعة من القواعد التي يجب على المرء اتباعها.
- لا يمكن أن يحتوي اسم وظيفة استدعاء روتين فرعي أو VBA على مسافة
- يجب أن يبدأ اسم Excel VBA Call Sub أو اسم الوظيفة بحرف أو شرطة سفلية. ولا يمكن أن يبدأ برقم أو حرف خاص
- لا يمكن أن يكون اسم الروتين الفرعي أو الوظيفة كلمة أساسية. الكلمة الرئيسية هي كلمة لها معنى خاص في VBA. كلمات مثل Private وSub وFunction وEnd وما إلى ذلك كلها أمثلة على الكلمات الرئيسية. يستخدمها المترجم لمهام محددة.
بعد اختيار اسم صالح، يتبع الإعلان نفسه نمطًا ثابتًا.
بناء جملة الروتين الفرعي لـ VBA
سوف تحتاج إلى تمكين علامة التبويب "المطور" في Excel لمتابعة هذا المثال. إذا كنت لا تعرف كيفية تمكين علامة تبويب المطور، فاقرأ البرنامج التعليمي عناصر تحكم VBA في Excel
هنا في بناء الجملة،
Private Sub mySubRoutine(ByVal arg1 As String, ByVal arg2 As String) 'do something End Sub
شرح النحو
| Code | اكشن |
|---|---|
|
|
|
|
|
|
يقبل البرنامج الفرعي التالي الاسم الأول والأخير ويعرضهما في مربع رسالة.
الآن سنقوم ببرمجة وتنفيذ هذا الإجراء الفرعي. دعونا نرى هذا.
كيفية استدعاء Sub في VBA
فيما يلي عملية خطوة بخطوة حول كيفية استدعاء Sub في VBA:
- تصميم واجهة المستخدم وتعيين خصائص عناصر تحكم المستخدم.
- إضافة الروتين الفرعي
- اكتب رمز حدث النقر لزر الأمر الذي يستدعي الروتين الفرعي
- اختبر التطبيق
الخطوة 1) واجهة المستخدم
قم بتصميم واجهة المستخدم كما هو موضح في الصورة أدناه.
قم بتعيين الخصائص التالية. الخصائص التي نقوم بتعيينها:
| S / N | السيطرة | الممتلكات | بعد التخفيض |
|---|---|---|---|
| 1 | زر الأوامر1 | الاسم | btnDisplayFullName |
| 2 | شرح | روتين فرعي الاسم الكامل |
يجب أن تبدو واجهتك الآن كما يلي.
الخطوة 2) إضافة روتين فرعي
- اضغط على Alt + F11 لفتح نافذة التعليمات البرمجية
- أضف البرنامج الفرعي التالي
Private Sub displayFullName(ByVal firstName As String, ByVal lastName As String) MsgBox firstName & " " & lastName End Sub
هنا في الكود،
| Code | الإجراءات |
|---|---|
|
|
|
|
|
|
الخطوة 3) استدعاء الروتين الفرعي
استدعاء الروتين الفرعي من زر الأمر انقر فوق الحدث.
- انقر بزر الماوس الأيمن على زر الأمر كما هو موضح في الصورة أدناه. ثم حدد "عرض". Code.
- سيتم فتح محرر التعليمات البرمجية
أضف الكود التالي في محرر الكود لحدث النقر على زر الأمر btnDisplayFullName.
Private Sub btnDisplayFullName_Click() displayFullName "John", "Doe" End Sub
يجب أن تبدو نافذة التعليمات البرمجية الخاصة بك الآن كما يلي
احفظ التغييرات وأغلق نافذة التعليمات البرمجية.
الخطوة 4) اختبار الكود
على شريط أدوات المطور، قم بإيقاف وضع التصميم. كما هو مبين أدناه.
الخطوة 5) انقر فوق زر الأمر "FullName Subroutine".
سوف تحصل على النتائج التالية
يُعد الزر مريحًا، ولكنه ليس الطريقة الوحيدة لبدء روتين فرعي، ونادرًا ما يكون الأسرع أثناء التطوير.
كيفية تشغيل روتين فرعي بدون زر
أثناء كتابة التعليمات البرمجية، يُعدّ إضافة عنصر تحكم إلى ورقة العمل لمجرد اختبار إجراء فرعي مضيعة للوقت. يوفر VBA أربع طرق أخرى لتشغيل إجراء فرعي، وكل منها يناسب مرحلة مختلفة من دورة التطوير.
- اضغط على F5 في المحرر: ضع المؤشر في أي مكان داخل الإجراء الفرعي واضغط على F5. سيتم تشغيله فورًا. يعمل هذا فقط عندما لا يأخذ الإجراء الفرعي أي وسائط، لأن VBA لا يحتوي على قيم لتزويدها.
- اتبع الخطوات باستخدام F8: قم بتشغيل نفس الأمر، سطرًا سطرًا، لتتمكن من مراقبة تغير كل متغير في نافذة المتغيرات المحلية. استخدم هذه الطريقة عندما تكون النتيجة خاطئة وتحتاج إلى معرفة موضع الخطأ.
- استخدم مربع حوار وحدات الماكرو: في علامة تبويب المطور، انقر فوق وحدات الماكرو، واختر الاسم، ثم انقر فوق تشغيل. تظهر في هذه القائمة فقط الإجراءات الفرعية العامة بدون وسائط، ولهذا السبب عادةً ما يتم تعريف الإجراء الفرعي المساعد على أنه خاص.
- اتصل به من فرع آخر: هذه هي الطريقة المستخدمة لأي إجراء فرعي يأخذ وسائط، وهي الطريقة التي يعتمد عليها زر الأمر أعلاه.
للخيار الأخير شكلان مقبولان. كتابة الاسم متبوعًا بالوسائط المجردة تعمل، وكذلك استخدام الكلمة المفتاحية Call صراحةً، لكن قاعدة الأقواس تختلف بينهما.
Sub RunTheGreeting() ' Form 1: no Call keyword, no brackets displayFullName "John", "Doe" ' Form 2: Call keyword, brackets required Call displayFullName("Jane", "Roe") End Sub
يؤدي كلا السطرين نفس الوظيفة تمامًا. ويُعدّ خلط الشكلين، بكتابة الأقواس بدون الكلمة المفتاحية Call، السبب الأكثر شيوعًا لخطأ الترجمة "المتوقع: =" عندما تأخذ دالة فرعية أكثر من وسيط واحد.
الفرق بين الإجراء الفرعي والدالة في VBA
الإجراءان الفرعي والدالة هما نوعا الإجراءات في لغة VBA، وكثيراً ما يختار المبتدئون النوع الخاطئ. والسؤال الحاسم بسيط: هل يحتاج الكود المُستدعي إلى قيمة مُعادة؟
| الميزات | فرعية | الوظيفة |
|---|---|---|
| إرجاع قيمة | لا | نعم، تم تعيينها لاسم الدالة |
| أُعلن مع | فرعي … نهاية فرعي | الدالة … نهاية الدالة |
| كما دعا | بيان مستقل | جزء من تعبير، على سبيل المثال x = myFunc(2) |
| قابل للاستخدام في خلية ورقة العمل | لا | نعم، كدالة معرفة من قبل المستخدم |
| الاستخدام النموذجي | قم بتنسيق ورقة، وامسح المدخلات، واعرض رسالة. | احسب المجموع، وحوّل القيمة، وابحث عن البيانات |
استخدم إجراءً فرعيًا عندما يعمل الكود على المصنف، و دالة VBA عندما ينتج الكود إجابة يستهلكها شيء آخر.






