(Visual Basic Editor in Excel (VBE
محرر الفيجوال بيسك لإكسل
قبل أن نتعمق أكثر فى شرح لغة الـ VBA ، يجب ان نتعرف على المحرر الخاص باكسل ويختصر الى VBE
يعتبر (Visual Basic Editor (VBE في Excel بيئة استخدام كتابة وتحرير وتصحيح التعليمات البرمجية لـ VBA ، وهو موجود في مصنف Microsoft Excel.
تشغيل وفتح المحرر
قم بتشغيل محرر Visual Basic
لبدء تشغيل VBE في Excel 2007 وما فوق :
لديك أربع طرق لفتح المحرر :
- على علامة التبويب المطور (Developer tab) في مجموعة التعليمات البرمجية ، انقر فوق Visual Basic لعرض VBE.
- في علامة التبويب Developer ، في المجموعة Controls ، انقر فوق View Code لعرض VBE.
- انقر بزر الماوس الأيمن على علامة تبويب ورقة العمل النشطة في الجزء السفلي ، ثم انقر فوق عرض الرمز لعرض VBE.
- اضغط على المفتاحين معا Alt + F11 للتبديل بين بيئة المصنف و VBE.
لتشغيل أو تحرير ماكرو لم يتم ربطه بزر
لتحرير ماكرو في VBE: من علامة التبويب المطور ، في المجموعة Code ، انقر فوق Macros ، الذي يفتح مربع الحوار Macro. حدد اسم الماكرو وانقر على تحرير.
لبدء VBE في Excel 2003:
انقر فوق أدوات -> ماكرو -> محرر Visual Basic؛ أو
استخدم مجموعة مفاتيح ALT + F11؛ أو
انقر بزر الماوس الأيمن على علامة تبويب ورقة العمل النشطة في الجزء السفلي ، ثم انقر على عرض الرمز لعرض VBE.
مكونات محرر Visual Basic
- المحرر
- نافذة مستكشف المشاريع
- نافذة الكود
- النافذة المباشرة
- قائمة File
- قائمة Edite
- قائمة View
- قائمة Insert
- قائمة Format
- قائمة Debug
- قائمة Run
- قائمة Tools Part-1
- قائمة Tools Part-2
لتلقي نظرة على الصورة التالية (اضغط على الصورة لتكبيرها):
نافذة الكود Code Window
لم يتم الاشارة اليها بالصورة أعلاه ولكن يظهر بالصورة أسطر برمجية ذات لون أزرق هذا هو نافذة الكود ، هذا هو المكان الذي تكتب فيه وتقوم بتعديل التعليمات البرمجية الخاصة بك والإجراءات ، وكذلك حيث يتم تسجيل وحدات الماكرو بواسطتك.
أعلى يسار إطار التعليمات البرمجية هي قائمة الإجراءات (Procedure list) التي يمكنك من خلالها الانتقال بسرعة إلى إجراء آخر في الوحدة النمطية النشطة.
في الجزء السفلي من إطار التعليمات البرمجية يمكنك ضبط بين طريقة العرض "إجراء" (Procedure view) التي تعرض إجراء واحد في الوحدة النمطية النشطة ، وعرض "الوحدة النمطية الكامل" وهو طريقة العرض الافتراضية ويعرض كافة الإجراءات في الوحدة النمطية النشطة.
Project Explorer
يعرض Project Explorer قائمة بكافة المشروعات الموجودة.
من خلاله يمكنك اخفاء أو توسيع لعرض الكائنات وأشكال المستخدم والوحدات الموجودة في المشروع.
يحتوي كل مشروع على:
- مجلد كائنات ، وهو مجلد Microsoft Excel Objects
- مجلد النماذج إذا كان يحتوي على UserForms
- مجلد الوحدات النمطية (Module)إذا كان يحتوي على الوحدات النمطية
- ومجلد "فئة الوحدات النمطية" (Class Module) إذا كان يحتوي على فئات.
دائمًا ما يكون مجلد الكائنات موجودًا ويحتوي على:
كائن ورقة لكل ورقة عمل موجودة وكائن ThisWorkbook.
يحتوي كل كائن من عناصر الورقة على أول اسم له يظهر خارج الأقواس وهو اسم رمز الصف ، والاسم الثاني الذي يظهر بعد اسم الرمز وداخل الأقواس هو اسم علامة تبويب الورقة الذي يظهر في علامة التبويب ورقة عمل Excel. لعرض "إطار مستكشف" المشروع ، انقر فوق "عرض" على شريط القوائم VBE ثم حدد Project Explorer أو اضغط CTRL + R في VBE.
يجب أن تكون وحدات الماكرو (رموز vba أو الإجراءات الفرعية) موجودة في الوحدات النمطية المناسبة أو لن يتمكن Excel من العثور عليها وتنفيذها.
يتم استخدام الوحدات النمطية للكائنات لإجراءات الأحداث المضمنة في Excel ولإنشاء أحداثك الخاصة.
الوحدات النمطية كائن في Excel :
الوحدة النمطية ThisWorkbook يمكن وضع شفرات برمجية بداخلها .
و الوحدات النمطية ورقة (أوراق العمل و أوراق المخطط) يمكن وضع شفرات برمجية بداخلها .
و الوحدات النمطية UserForm يمكن وضع شفرات برمجية بداخلها .
و الوحدات النمطية للفئة يمكن وضع شفرات برمجية بداخلها .
يتم وضع رمز vba عام فيما يتعلق بالأحداث غير المرتبطة بجسم معين (مثل المصنف أو ورقة العمل) في وحدة التعليمات البرمجية القياسية.
الممارسة المقبولة بشكل عام هي وضع إجراءات الحدث في الوحدة النمطية ThisWorkbook ووحدات الورقة ووحدات UserForm ، مع وضع رموز vba أخرى في وحدات الكود القياسي.
Properties Window
تعرض نافذة الخصائص قائمة بالخصائص الخاصة بالعنصر أو العنصر المحدد ، والتي يمكن تحريرها هنا ، للوحدات النمطية فقط يمكن تعديل أسمها عادة .
بينما تحتوي أوراق العمل على خصائص إضافية مثل DisplayPageBreaks و EnableCalculation و StandardWidth ، إلخ ، والتي يمكن تحريرها هنا ، ومع ذلك ، فإن استخدام الإطار "خصائص" يصبح مفيدًا بشكل خاص لتحرير خصائص (UserForm ( BackColor ، Size ، Caption .
وكذلك خصائص عناصر التحكم الخاصة به مثل TextBox ، و ComboBox ، و CommandButton ، إلخ ، بسبب الإعدادات العديدة المتاحة.
لعرض "إطار خصائص" ، في VBE انقر فوق "عرض" في شريط القوائم ثم حدد "إطار خصائص" أو اضغط F4.
تحتوي نافذة الخصائص على علامتي تبويب حيث تظهر الخصائص بترتيب أبجدي أو يتم تصنيفها.
كل خاصية لديها 2 عمود ، على اليسار هو اسم الخاصية وعلى اليمين هو قيمة الخاصية.
اسم الخاصية هو كلمة واحدة بدون مسافات أو يمكنك وضع الشرطة السفلية (underscore) بين الكلمات بدلا من المسافات وهو الاسم المستخدم في الوصول إلى الخاصية في رمز vba.
لاحظ أن كل ورقة عمل لها اسم رمز واسم ورقة كما هو موضح أعلاه بالصورة :
اسم الرمز هو الاسم الأول الذي يظهر خارج الأقواس في Project Explorer
بينما اسم الورقة (أي اسم علامة تبويب الورقة) هو الاسم الثاني الذي يظهر بعد اسم الرمز وداخل الأقواس.
يظهر اسم الرمز الخاص بورقة العمل المختارة على يمين (الاسم) في نافذة الخصائص ، بينما يظهر اسم الورقة على يمين الاسم عند التمرير لأسفل في نافذة الخصائص.
بشكل افتراضي ، عند إضافة ورقة عمل ، يكون اسم الورقة واسم الشفرة متشابهين.
يمكنك تغيير اسم التعليمة البرمجية واسم الورقة ، ولكن يمكن تغيير اسم الرمز فقط في الإطار "خصائص" وليس برمجيًا باستخدام التعليمة البرمجية.
يمكن استخدام اسم التعليمة البرمجية واسم الورقة أثناء كتابة التعليمات البرمجية - سيعمل اسم التعليمة البرمجية على حماية رمز vba وألا يؤثر على رمز vba إذا قام المستخدمون بتغيير اسم الورقة.
Menus and Toolbars
يحتوي VBE على شريط القوائم الذي يحتوي على قوائم مثل File و Edit و View و Insert و… الخ
وأشرطة أدوات أخرى ، مثل أشرطة الأدوات Standard و Debug و Edit و UserForm
حيث يمكنك إضافة أوامر (تظهر كأنها buttoms أو رموز) مثل Save و Print و Delete … الخ
Object drop-down Box and Procedure drop-down Box
في الجزء العلوي من "إطار التعليمات البرمجية" ، يوجد مربعي القائمة المنسدلة - على اليسار مربع "كائن"
وعلى اليمين يوجد مربع إجراء.
في القائمة المنسدلة كائن ، يمكنك تحديد كائن للعمل عليه.
ورقة العمل أو المصنف أو UserForm (أو أي عنصر تحكم UserForm مثل TextBox) ، إلخ.
عند تحديد كائن ، يمكنك تحديد إجراء الحدث المتوفر لهذا الكائن من القائمة المنسدلة الإجراءات.
حدث "فتح" لكائن المصنف ، وحدث "التغيير" لعنصر ورقة العمل ، وما إلى ذلك.
عندما تعمل فقط مع التعليمات البرمجية ، يعرض المربع الكائن "عام" وهو الكائن الافتراضي
ويحتوي المربع "إجراء" على قائمة من وحدات الماكرو الفردية الموجودة أو الإجراءات الموجودة داخل الوحدة النمطية النشطة تحت عنوان "Declarations".
The Immediate Window
يتم استخدام الإطار الفوري في VBE لتصحيح التعليمات البرمجية لـ VBA ويسمح لك بالتحقق من نتائج سطر فردي من التعليمات البرمجية.
يمكنك كتابة الرمز ثم الضغط على Enter للتنفيذ ، مما يتيح التقييم الفوري للبيان أو الطريقة أو الإجراء.
لعرض "الإطار الفوري" ، انقر فوق "عرض" في شريط القوائم VBE ثم حدد "الإطار الفوري" أو اضغط CTRL + G.
The Locals Window
تستخدم النافذة المحلية في VBE كأداة لتصحيح الأخطاء ، وتعرض تلقائيًا الاسم والقيمة والنوع لجميع المتغيرات المعلنة في الإجراء الحالي وتحديث قيم المتغيرات أثناء تنفيذ الشفرة.
لعرض الإطار المحلي ، انقر فوق عرض في شريط القوائم VBE ثم حدد الإطار المحلي.
The Watch Window
يستخدم إطار المراقبة في VBE كأداة لتصحيح الأخطاء ، ويسمح لك بمشاهدة ومراقبة القيمة الحالية للمتغير أو التعبير ، التي يتم عرض اسمها وقيمتها ونوعها وسياقها في النافذة.
تحتاج إلى إضافة متغير أو تعبير خاص إلى نافذة المراقبة التي تريد مراقبتها ، بخلاف النافذة المحلية حيث يتم عرض جميع المتغيرات في الإجراء الحالي تلقائيًا.
لإضافة المتغير أو التعبير إلى إطار المراقبة ، قم بتحديده ثم انقر بزر الماوس الأيمن ثم انقر فوق إضافة مشاهدة ، أو قم بتحديده بدلاً من ذلك ثم انقر فوق إضافة مشاهدة أو Quick Watch من القائمة Debug ، أو بديل آخر هو تحديده ثم اضغط على مفاتيح
Shift + F9.
يتم عرض نافذة المراقبة تلقائيًا عند إضافة متغير أو تعبير إلى نافذة المراقبة.
يمكنك أيضًا عرض نافذة المراقبة بالنقر فوق عرض في شريط قوائم VBE ثم تحديد إطار المراقبة ، ثم إضافة متغير أو تعبير تريد مراقبته.
Command Bars and Controls in VBE
يحتوي Excel على كل من أشرطة الأوامر المضمنة وأشرطة الأوامر المخصصة التي تمت إضافتها بواسطة المستخدم.
يمكن أن يتكون شريط الأوامر من 3 أنواع:
شريط القوائم
أو شريط الأدوات
أو قائمة منبثقة.
يمكن أن يحتوي كل شريط أوامر إضافي على أشرطة أوامر وعناصر تحكم إضافية.
تحتوي مجموعة عناصر التحكم على كافة عناصر التحكم الموجودة على شريط أوامر - استخدم خاصية عناصر التحكم الخاصة بالكائن CommandBar لإرجاع كائن CommandBarControls ، وهو مجموعة من كائنات CommandBarControl ويشير إلى كافة عناصر التحكم الموجودة على شريط الأوامر.
ستستخدم خاصية Caption و خاصية فهرس كائن CommandBarControl للإشارة إلى عنصر تحكم شريط الأوامر بواسطة التسمية التوضيحية أو رقم الفهرس الخاص به (بداية بـ 1) على التوالي.
عنصر تحكم يحتوي أيضًا على مجموعة عناصر تحكم تحتوي على كافة عناصر التحكم في قائمة منبثقة (عنصر تحكم القائمة المنبثقة يحتوي على طبقة (طبقات) متداخلة من القوائم والقوائم الفرعية) ، سيكون من النوع msoControlPopup.
راجع أدناه المثال الذي يقوم بإظهار أشرطة الأوامر & و عناصر التحكم المتوفرة في VBE.
'Permits any person to use this code provided that the source is mentioned
'https://elshriefacademy.blogspot.com
Sub CommandBarsControls()
'returns Command Bars & Controls available in VBE - refer Image 5.
Dim ws As Worksheet
Dim cmdBar As CommandBar
Dim ctlTL As CommandBarControl, ctlSL As CommandBarControl
Dim lRow As Long, lCol As Long
Set ws = Worksheets("Sheet1")
ws.Activate
'set start cell to range A1:
lRow = 1
lCol = 1
'Loop through Command Bars viz. Menu Bar, Standard, Edit, UserForm, Debug, ...
For Each cmdBar In Application.VBE.CommandBars
'enter command bar name in a worksheet cell, starting from range A1:
Cells(lRow, lCol).Value = cmdBar.Name
'set font to bold:
Cells(lRow, lCol).Font.Bold = True
'set backcolor of cells to red:
Cells(lRow, lCol).Interior.Color = vbRed
'enter next command bar in successive rows:
lRow = lRow + 1
'Loop through Top-Level menus viz. File, Edit, View, Insert, ...
For Each ctlTL In Application.VBE.CommandBars(cmdBar.Index).Controls
'enter the control ID and caption:
Cells(lRow, lCol).Value = ctlTL.ID & " - " & ctlTL.Caption
'set backcolor of cells to green:
Cells(lRow, lCol).Interior.Color = vbGreen
'include controls also having a Controls collection _
containing all controls on a pop-up menu ie. _
of type msoControlPopup:
If ctlTL.Type = msoControlPopup Then
'alternatively: msoControlSplitButtonMRUPopup control _
type will include Align/Center/Size sub-level controls _
(Lefts, Centers, Rights, Width, Height, ...) for _
UserForm command bar:
'If ctlTL.Type = msoControlPopup Or ctlTL.Type = _
msoControlSplitButtonMRUPopup Then
'Loop through Sub-Level menus (of each Top-Level menu) _
File->New Project, File->Open Project, ...
For Each ctlSL In _
Application.VBE.CommandBars(cmdBar.Index).Controls _
(ctlTL.Caption).Controls
'go to successive columns to enter next Sub-Level menu:
lCol = lCol + 1
'enter the sub-level control ID and caption, in successive columns:
Cells(lRow, lCol).Value = ctlSL.ID & " - " & ctlSL.Caption
'set backcolor of cells to yellow:
Cells(lRow, lCol).Interior.Color = vbYellow
Next
End If
'enter next Top-Level menu in successive rows:
lRow = lRow + 1
'start from first column for next Top-Level menu:
lCol = 1
Next
Next
'autofit column width:
ws.UsedRange.Columns.AutoFit
End Sub