أفضل دليل VBA (للمبتدئين) ستحتاجه على الإطلاق

تعد منصة برمجة VBA(VBA programming) التي تعمل في جميع منتجات Microsoft Office تقريبًا واحدة من أقوى الأدوات التي يمكن لأي شخص استخدامها لتحسين استخدام هذه المنتجات.

سيوضح لك دليل VBA للمبتدئين كيفية إضافة قائمة Developer إلى تطبيق Office الخاص بك ، وكيفية الدخول إلى نافذة محرر VBA ، وكيف تعمل عبارات (VBA)VBA والحلقات الأساسية بحيث يمكنك البدء في استخدام VBA في Excel و Word و Powerpoint و Outlook و OneNote .

يستخدم دليل VBA هذا أحدث إصدار من منتجات Microsoft Office . إذا كان لديك إصدار سابق ، فقد ترى بعض الاختلافات الطفيفة عن لقطات الشاشة.

كيفية تمكين واستخدام محرر VBA(How To Enable & Use The VBA Editor)

في أي من منتجات Office المستخدمة في هذا الدليل ، قد تلاحظ أنه ليس لديك قائمة Developer المشار إليها . قائمة المطور متاحة فقط في Excel و Word و Outlook و Powerpoint . لا يقدم OneNote أداة لتحرير (OneNote)تعليمات VBA(VBA) البرمجية من داخل التطبيق ، ولكن لا يزال بإمكانك الرجوع إلى OneNote API للتفاعل مع OneNote من برامج Office الأخرى . 

ستتعرف على كيفية القيام بذلك في دليل Advanced VBA القادم الخاص بنا .

  • لتمكين قائمة Developer في أي منتج مكتبي ، حدد قائمة File وحدد Options من قائمة التنقل اليسرى. 
  • سترى قائمة الخيارات(Options) المنبثقة. حدد تخصيص الشريط(Customize Ribbon) من قائمة التنقل اليسرى.

تتضمن القائمة اليمنى جميع القوائم وأوامر القوائم المتوفرة في تطبيق Office هذا . القائمة الموجودة على اليمين هي تلك المتوفرة حاليًا أو المفعلة.

  • يجب أن ترى Developer في القائمة الموجودة على اليسار ، ولكن لن يتم تنشيطه. ما عليك سوى(Just) تحديد مربع الاختيار لتنشيط قائمة Developer .

  • إذا كنت لا ترى المطور(Developer) متاحًا على اليمين ، فقم بتغيير أوامر اختيار(Choose commands) اليسار من القائمة المنسدلة إلى جميع الأوامر(All Commands) . ابحث عن Developer من القائمة وحدد Add>> في الوسط لإضافة تلك القائمة إلى الشريط(Ribbon) .
  • حدد " موافق(OK) " عند الانتهاء.
  • بمجرد تنشيط قائمة Developer ، يمكنك العودة إلى نافذة التطبيق الرئيسية وتحديد Developer من القائمة العلوية. 
  • ثم حدد عرض الرمز(View Code) من مجموعة عناصر التحكم(Controls) في الشريط لفتح نافذة محرر VBA .

  • سيؤدي هذا إلى فتح نافذة محرر VBA حيث يمكنك كتابة الرمز الذي ستتعلمه في الأقسام القليلة التالية.

  • حاول إضافة قائمة Developer إلى عدد قليل من تطبيقات Office التي تستخدمها كل يوم. بمجرد أن تشعر بالراحة عند فتح نافذة محرر VBA ، تابع إلى القسم التالي من هذا الدليل.

نصائح عامة حول برمجة VBA للمبتدئين(General VBA Programming Tips for Beginners)

ستلاحظ عند فتح محرر VBA ، أن خيارات التنقل في اللوحة اليمنى تبدو مختلفة من تطبيق Office إلى آخر.

هذا لأن الكائنات المتاحة حيث يمكنك وضع التعليمات البرمجية لـ VBA تعتمد على الكائنات الموجودة في التطبيق. على سبيل المثال ، في Excel ، يمكنك إضافة التعليمات البرمجية لـ VBA إلى كائنات المصنف أو الورقة. في Word ، يمكنك إضافة رمز VBA إلى المستندات. (VBA)في Powerpoint ، فقط للوحدات النمطية.

لذا ، لا تتفاجأ بالقوائم المختلفة. إن بنية وصياغة التعليمات البرمجية لـ VBA هي نفسها عبر جميع التطبيقات. (VBA)الاختلاف الوحيد هو الكائنات التي يمكنك الرجوع إليها والإجراءات التي يمكنك اتخاذها على هذه الكائنات من خلال التعليمات البرمجية لـ VBA .

قبل أن نغوص في الكائنات والإجراءات المختلفة التي يمكنك القيام بها عبر كود VBA ، دعنا أولاً نلقي نظرة على بنية VBA الأكثر شيوعًا وبناء الجملة التي يمكنك استخدامها عند كتابة التعليمات البرمجية لـ VBA .

أين أضع كود فبا(Where To Put VBA Code)

عندما تكون في محرر VBA ، تحتاج إلى استخدام مربعي القائمة المنسدلة أعلى نافذة التحرير لاختيار الكائن الذي تريد إرفاق الكود به ، والوقت الذي تريد تشغيل الكود.

على سبيل المثال ، في Excel ، إذا اخترت Worksheet and Activate ، فسيتم تشغيل الكود عند فتح ورقة العمل. 

تتضمن إجراءات ورقة العمل الأخرى التي يمكنك استخدامها لتشغيل التعليمات البرمجية لـ VBA عندما تتغير ورقة العمل ، وعندما تكون مغلقة (غير نشطة) ، وعندما يتم تشغيل حساب ورقة العمل ، والمزيد.

عند إضافة رمز VBA في المحرر ، تأكد دائمًا من وضع رمز VBA الخاص بك على الكائن واستخدام الإجراء الصحيح الذي تريد استخدامه لتشغيل هذا الرمز.

بيانات VBA IF(VBA IF Statements)

تعمل جملة IF في VBA تمامًا كما تعمل في أي لغة برمجة أخرى.

ينظر الجزء الأول من عبارة IF إلى ما إذا كان الشرط أو مجموعة الشروط صحيحة. يمكن ضم هذه الشروط بواسطة عامل التشغيل AND أو OR لربطها معًا.

قد يكون أحد الأمثلة هو التحقق مما إذا كان التقدير في جدول بيانات أعلى أو أدنى من تقدير "النجاح" ، وتعيين حالة النجاح أو الفشل لخلية أخرى.

If Cells(2, 2) > 75 Then Cells(2, 3) = “Pass” Else Cells(2, 3) = “Fail”

إذا كنت لا تريد العبارة بأكملها في سطر واحد ، فيمكنك تقسيمها إلى عدة أسطر عن طريق إضافة رمز "_" في نهاية السطور.

If Cells(2, 2) > 75 Then _
Cells(2, 3) = “Pass”  Else _
Cells(2, 3) = “Fail”

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

VBA للحلقات التالية(VBA For Next Loops)

عبارات IF رائعة للمقارنات الفردية ، مثل المثال أعلاه للنظر في خلية واحدة. ولكن ماذا لو كنت تريد إجراء تكرار عبر نطاق كامل من الخلايا وتنفيذ نفس عبارة IF على كل منها؟

في هذه الحالة ، ستحتاج إلى حلقة FOR

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

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

خافت rng كنطاق ، خلية بصف نطاق (Dim rng As Range, cell As Range)
خافت عداد كعدد صحيح(Dim rowCounter as Integer)

حدد حجم النطاق على النحو التالي. 

Set rng = Range(“B2:B7”)
rowCounter = 2

أخيرًا ، يمكنك إنشاء حلقة FOR الخاصة بك للتنقل عبر كل خلية في هذا النطاق وإجراء المقارنة.

For Each cell In rng
   If cell.Value > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"

   rowCounter = rowCounter + 1

Next cell

بمجرد تشغيل برنامج VBA النصي(VBA script) ، سترى النتائج في جدول البيانات الفعلي.

VBA أثناء التكرارات(VBA While Loops)

تتكرر حلقة while Loop أيضًا عبر سلسلة من العبارات ، تمامًا مثل حلقة FOR ، لكن شرط استمرار الحلقة يظل شرطًا صحيحًا.(FOR)

على سبيل المثال ، يمكنك كتابة نفس حلقة FOR أعلاه ، مثل حلقة WHILE ، ببساطة باستخدام متغير rowCounter على النحو التالي.

While rowCounter < rng.Count + 2
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   rowCounter = rowCounter + 1
Wend

ملاحظة: rng.Count + 2 حد الإنهاء لأن عداد الصف يبدأ عند 2 ويجب أن ينتهي في الصف 7 حيث تنتهي البيانات. ومع ذلك ، فإن عدد النطاق (B2: B7) هو 6 فقط ، وستنتهي الحلقة while فقط عندما يصبح العداد أكبر من العداد - لذلك يجب أن تكون قيمة الصف الأخير للعداد 8 (أو rng.Count + 2) .(GREATER)

يمكنك أيضًا إعداد حلقة while كما يلي:

While rowCounter <= rng.Count + 1

يمكنك فقط زيادة عدد النطاق (6) في 1 ، لأنه بمجرد وصول متغير rowCounter إلى نهاية البيانات (الصف 7) ، يمكن أن تنتهي الحلقة.

VBA تفعل بينما تفعل حتى الحلقات(VBA Do While and Do Until Loops)

الحلقات Do while and Do until متطابقة تقريبًا مع حلقات while ، لكنها تعمل بشكل مختلف قليلاً.

  • تتحقق حلقة while Loop(While Loop) مما إذا كان الشرط صحيحًا في بداية الحلقة.
  • يتحقق Do-while Loop(Do-While Loop) مما إذا كان الشرط صحيحًا بعد تنفيذ العبارات في الحلقة.
  • يتحقق Do-until Loop(Do-Until Loop) مما إذا كان الشرط لا يزال خاطئًا بعد تنفيذ الحلقة.

في هذه الحالة ، ستعيد كتابة حلقة while أعلاه على النحو التالي ، كحلقة Do-while.

Do
   If Cells(rowCounter, 2) > 75 Then _
   Cells(rowCounter, 3) = "Pass" Else _
   Cells(rowCounter, 3) = "Fail"
   
   rowCounter = rowCounter + 1
Loop While rowCounter < rng.Count + 2

في هذه الحالة ، لا يتغير المنطق كثيرًا ، ولكن إذا كنت تريد التأكد من إجراء مقارنة المنطق بعد تشغيل جميع العبارات (السماح لهم جميعًا بالتشغيل بغض النظر عن مرة واحدة على الأقل) ، فحينئذٍ أو فعل-حتى حلقة هي الخيار الصحيح.

VBA حدد بيانات الحالة(VBA Select Case Statements)

النوع الأخير من البيان المنطقي الذي ستحتاج إلى فهمه لبدء هيكلة كود VBA الخاص بك هو عبارات (VBA)Select Case .

بالنظر إلى المثال أعلاه ، لنفترض أنك تريد أن يكون لديك طريقة تقدير لا تنجح فقط. بدلاً من ذلك ، تريد تعيين درجة بالحرف من A إلى F.

يمكنك القيام بذلك باستخدام عبارة Select Case التالية :

For Each cell In rng
   
   Select Case cell

   Case 95 To 100
      Cells(rowCounter, 3) = "A"
   Case 85 To 94
      Cells(rowCounter, 3) = "B"
   Case 75 To 84
      Cells(rowCounter, 3) = "C"
   Case 65 To 74
      Cells(rowCounter, 3) = "D"
   Case 0 To 64
      Cells(rowCounter, 3) = "F"
   End Select

   rowCounter = rowCounter + 1

Next cell

يبدو جدول البيانات الناتج بعد تشغيل برنامج VBA النصي مثل الجدول أدناه.

أنت الآن تعرف كل ما تحتاج إلى معرفته لبدء استخدام VBA في تطبيقات Microsoft Office .



About the author

أنا فني كمبيوتر عملت مع Android وبرامج المكتب لسنوات عديدة. لقد قمت أيضًا بتعليم الأشخاص كيفية استخدام أجهزة Mac على مدار السنوات الخمس الماضية أو نحو ذلك. إذا كنت تبحث عن شخص يعرف كيفية إصلاح الأشياء على جهاز الكمبيوتر الخاص بك ، فربما يمكنني مساعدتك!



Related posts