الأرشيف لـأغسطس, 2007

فيجوال بيسك / إكسل - تطبيقات متقدمة

ناقشتُ في عدة مقالات سابقة فوائد الفيجوال بيسك ومبادئ استخدامه. في هذه المقالة أحاول استعراض كيفية استخدام أدوات التحكم في صفحة إكسل مع بعض البرمجة.

تطبيق 1:

افترض أنك تريد أن تستعرض بيانات المبيعات والمصاريف الشهرية -كالتي بالجدول أدناه - على صورة رسم بياني يربط بين متغير واحد من هذه المتغيرات مع الزمن (الشهور). يمكننا أن نرسم العديد من الرسومات البيانية عن طريق إكسل ولكن هذا يجعل شكل الصفحة غير مريح ويجعل التنقل بين الرسومات أمرا عسيرا

يمكننا استخدام أدوات التحكم مع برنامج فيجوال بيسك صغير للقيام بنفس المهمة بشكل جميل ويسير.

 vbex57.jpg

 ابدأ برسم العلاقة بين الشهور ومبيعات المنتج الأول

 vbex52.jpg

ابدأ بتسجيل ماكرو ثم قم بتغييرمصدر البيانات Source Data للرسم البياني بحيث تكون العلاقة بين الشهور ومبيعات المنتج الثاني. أوقف تسجيل الماكرو ثم تصفح هذا الماكرو في محرر فيجوال بيسك VBE فتجده الآتي

Sub Macro1()
    ActiveSheet.ChartObjects(”Chart 1″).Activate
    ActiveChart.PlotArea.Select
    ActiveChart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,E4:E16″), _
        PlotBy:=xlColumns
End Sub

 عن طريق تسحيل هذا الماكرو نستطيع التعرف على الأوامر اللازمة في فيجوال بيسك لتغيير المتغيرات في الرسم البياني. وهذا ما سوف نحتاجه في خطوة لاحقة.

لنبدأ في استخدام أدوات التحكم وفيجوال بيسك لكي نستطيع استعراض العلاقة بين أي متغير والشهور حسب رغبتنا

تأكد أنك في حالة التصميم Design Mode ثم افتح قائمة أدوات التحكم كما فعلنا في المقالة السابقة

اختر زر اختيارات  Option Button ثم قم بوضعه في صفحة إكسل بنفس الطريقة المستخدمة في رسم الأشكال

قم بنسخ هذا الزر وقم بعمل أربع نسخ منه بحيث يكون لديك خمس زر اختيارات Option Buttons

 vbex53.jpg

 قف على أول زر اختيارات واضغط على الفأرة يمينا ثم اختر خواص Properties. ابحث عن خاصية Caption أي اسم الزر وقم بتغيير اسم الزر إلى مُسمى المتغيرات في الجدول أعلاه بحيث تبدأ بـ Sales of Product A وتنتهي بـ Cost

 vbex54.jpg

لاحظ أن الخلفية الحمراء التي في الشكل أعلاه هي لون خلايا إكسل. يمكنك تغييرها للون غير اللون الأبيض لكي يكون الشكل واضحا إن أردت

نريد الآن أن نقوم بكتابة ماكرو يقوم بتغيير المتغير في الرسم البياني عند اختيار كل زر من هذه الأزرار.

قم بالضغط مرتين على زر الاختيارات Double Click -وأنت في حالة التصميم- فيظهر لك محرر فيجوال بيسك VBE

 vbex55.jpg

 هذا الماكرو يتم تنفيذه عند اختيار هذا الزر Click كما هو واضح من عنوانه. نود الآن كتابة جملة مشابهة لتلك التي حصلنا عليها عندما قمنا بتسجيل ماكرو - في أعلى الصفحة. ولكن سوف نقوم باختصاره وتعديلها كالتالي

ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,c4:c16″)

سوف نقوم بكتابة نفس الجملة لكل زر اختيارات Option Button  ولكن مع تغيير مصدر المعلومات في كل حالة حسب العمود الذي نرغب في إظهاره عند اختيار كل زر فنحصل على البرنامج التالي

Private Sub OptionButton1_Click()
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,c4:c16″)
End Sub

Private Sub OptionButton2_Click()
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,d4:d16″)
End Sub

Private Sub OptionButton3_Click()
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,e4:e16″)
End Sub

Private Sub OptionButton4_Click()
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,f4:f16″)
End Sub

Private Sub OptionButton5_Click()
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(”B4:B16,g4:g16″)
End Sub 
 

يُمكننا الآن تجربة عمل هذه الأزرار والتي سوف تتسبب في تغير محتويات الرسم البياني حسب الاختيار فعندما تختار زر التكلفة Cost تجد أن الرسم البياني يرسم العلاقة بين التكلفة والشهور وعندما تختار المنتج الثاني تجد أن الرسم البياني يرسم العلاقة بين مبيعات المنتج الثاني والشهور.

يمكنك تصور عِظم فائدة هذا البرنامج عندما يكون لديك الكثير من المتغيرات والتي تريد تحليلها عن طريق الرسم البياني. لاحظ أنك تستطيع بسهولة استخدام نفس البرنامج مع أي ملف آخر بإجراء بعض التعديلات البسيطة.

هذا المثال أوضح لنا كيفية برمجة أدوات التحكم وذلك بكتابة ماكرو مصاحب لبعض الأحداث التي تحدث على هذه الأدوات. في هذا المثال اكتفينا بماكرو يعمل عند الضغط  Click على الزر Option Button. وهناك الكثير من الأحداث الأخرى التي قد نحتاج في أمثلة أخرى أن نبني لها ماكرو مصاحب لحدوثها.

تطبيق 2:

لو افترضنا في المثال السابق أن عدد المتغيرات كبير جدا - أكثر من 10 على سبيل المثال- فإن أزرار الاختيار Option Buttons تصبح كثيرة جدا بشكل مزعج. دعنا نُجرب استخدام الصندوق المتدلي في هذه الحالة.

افتح قائمة أدوات التحكم واختر الصندوق المتدلي Combobox  وقم برسمه كالمعتاد. اضغط على الفأرة يمينا واختر خواص Properties.

سنقوم بتحديد مصدر معلومات الصندوق المتدلي عن طريق خاصية  ListFillRange. ولكن يجب أن يكون مصدر المعلومات عمودا وليس صفا لأن هذه الخاصية ListFillRange لا تقبل أن تكون صفا. لذلك سنقوم بنسخ وإعادة لصق الخلايا C4:G4 في أي عمود وليكن العمود Z عن طريق

 Copy…Pate /Transpose

 كما تعلم فإن Transpose  تقوم بنسخ الصف في عمود وبالتالي يكون لدينا نفس المعلومات في عمود.

نفترض أننا وضعنا الخلايا المنسوخة في العمود Z فقم بتغييرخاصية ListFillRange  إلى Z1:Z5.

 vbex58.jpg

 عند الخروج من حالة التصميم يكون شكل الصندوق المتدلي عند فتحه كالتالي

vbex59.jpg

علينا أن نكتب ماكرو يَقوم بتغيير الرسم البياني بناء على الاختيار في الصندوق المتدلي. لابد أن نتعرف أولا على رقم الاختيار بمعنى أنه الاختيار الأول أو الثاني أو الثالث….من القائمة وبالتالي يمكننا تحديد رقم العمود المناظر لهذا الاختيار. بعد ذلك يتم تغيير مصدر المعلومات كما في المثال السابق

Private Sub ComboBox1_Change()
j = 3 + ComboBox1.ListIndex
myrange = Sheets(”Sheet1″).Range(Cells(4, j), Cells(16, j)).Address
ChartObjects(”Chart 1″).Chart.SetSourceData Source:=Sheets(”Sheet1″).Range(myrange)
End Sub

المتغير J يتم حسابه بإضافة ثاثة لرقم الاختيار من الصندوق المتدلي. رقم الاختيار يتم تحديده عن طريق Combobox1.ListIndex والذي يبدأ من الصفر ثم واحد وهكذا أي أنه عند اختيار مبيعات المنتج الأول تكون قيمة الاختيار هي صفر وبالتالي قيمة المتغير J هي 3. يتم إضافة ثلاثة لأن الاختيار الاول مناظر للعمود الثالث في صفحة إكسل وهكذا.

بهذه الطريقة أمكننا استخدام الصندوق المتدلي Combobox بدلا من أزرار الاختيارات Option Buttons وكما ترى فكلا منهما له مزاياه.

تطبيق 3:

لنفترض أننا نريد - في المثال السابق- أن يكون لدينا وسيلة لإظهار وإخفاء الرسم البياني

اضغط على أيقونة حالة التصميم  Design Mode

افتح قائمة أدوات التحكم

أضف زر أوامر Command Button ثم أضف واحد آخر فيكون لدينا اثنان Command Button

قف على أحدهما واضغط يمينا على الفأرة ثم اختر خواص  Properties

قم بتغيير مسمى الزر  Caption الأول إلى View ثم اختر الزر الثاني وغيِّر المسمى إلى Hide

 vbex61.jpg

 اضغط مرتين Double Clickعلى الزر الأول لكي تكتب الماكرو المصاحب للضغط عليه ثم اكتب السطر التالي داخل الماكرو فيكون الماكرو كالتالي

 Private Sub CommandButton1_Click()
ChartObjects(”Chart 1″).Visible = -1
End Sub

السطر الأوسط يعني أن الرسم البياني ظاهرا. الآن قم بعمل نفس الشيء مع الزر الآخر ولكن الماكرو سيكون كالتالي

 Private Sub CommandButton1_Click()
ChartObjects(”Chart 1″).Visible = 0
End Sub

القيمة 0 تعني أن الرسم البياني غير ظاهر

اخرج من حالة التصميم بالضغط على أيقونة Exit design Mode

قم بتجربة عمل الزرين وينبغي أن تجد أن View تُظهر الرسم بينما Hide تُخفي الرسم

تطبيق 4:

حاول تنفيذ عملية إظهار وإخفاء الرسم البياني عن طريق صندوق اختيار Check box بدلا من زر الأوامر Command Button

تحول إلى حالة التصميم بالنقر على الأيقونة الخاصة بحالة التصميم ثم افتح قائمة أدوات التحكم

أضف صندوق اختيار إلى صفحة إكسل

قم بتغيير مسمى الصندوق Caption من Checkbox1 إلى View / Hide

vbex62.jpg 

اضغط مرتين لكتابة الماكرو المصاحب لاختيار وعدم اختيار صندوق الاختيار وهو كالتالي

 Private Sub CheckBox1_Click()
m = CheckBox1.Value
If m = True Then
ChartObjects(”Chart 1″).Visible = -1
Else
ChartObjects(”Chart 1″).Visible = 0
End If
End Sub

وأترك للقارئ فهم خطوات هذا الماكرو

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

يمكنك تنزيل الملف من الرابط التالي:
 رابط الملف

مواضيع ذات صلة في هذا الموقع:
فائدة تعلم فيجوال بيسك
فيجوال بيسك من إكسل- مقدمة
فيجوال بيسك من إكسل - تطبيقات
فيجوال بيسك / إكسل - أدوات التحكم

21 تعليقاً

فيجوال بيسك / إكسل - أدوات التحكم

هناك مجموعة من الأدوات التي يُمكنك استخدامها في صفحة إكسل للقيام بوظائف محددة. هذه الادوات قد تساعدك كثيرا في تحليل البيانات ودراسة الاحتمالات المختلفة وهو مما يحتاجه المهندسون الصناعيون والمديرون ومحللو البيانات. أستعرض في هذه المقالة بعض هذه الأداوت واستخداماتها البسيطة.

مثال 1:

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

 vbex31.jpg

يمكننا دراسة تأثير تغير سعر المادة أ بوسيلة بسيطة كالآتي:

اضغط على أيقونة صندوق أدوات التحكم Control Toolbox المبين أدناه

vbex32.jpg

تظهر لك النافذة التالية

 vbex33.jpg

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

اضغط علي أيقونة المسطرة المنزلقة  Scroll Bar -المشار إليها بالحلقة الحمراء في الشكل أعلاه. قم بوضع المسطرة المنزلقة كما بالشكل أدناه بنفس الطريقة التي تستخدمها عندما تقوم برسم أي شكل على برنامج إكسل أو غيره.

vbex34.jpg

نريد الآن أن نستخدم هذه المسطرة لتغيير تكلفة المادة أ. قف على المسطرة المنزلقة التي رسمتها واضغط على الزر الأيمن للفأرة ثم اختر الخواص Properties

vbex35.jpg 

 تظهر لك النافذة التالية

vbex36.jpg 

 لاحظ أنه في أعلى هذه النافذة يوجد خياران: Alphbetic , Categorized أي أبجدي ومصنف. الخيار “أبجدي” والذي هو الخيار الحالي يُرتب الخواص ترتيبا أبجديا حسب مسمى كل خاصية. أما الخيار الآخر “مصنف” فهو يصنف الخواص لمجموعات حسب طبيعة الخواص. اختر الخيار الثاني “مصنف” Categorized فتتحول النافذة إلى الشكل التالي

vbex37.jpg

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

Linked Cell أي الخلية المرتبطة بتحرك المسطرة المنزلقة أي الخلية التي ستتغير قيمتها كلما حركنا المسطرة المنزلقة. ضع القيمة F3 أي رقم الخلية التي تحوي تكلفة المادة أ

Large Change قيمة التغير الكبير على المسطرة المنزلقة وهي قيمة التغير عندما تقوم بقفزة كبيرة على المسطرة. ضع قيمة مناسبة حسب ما تريد وأقترح في هذا المثال أن تكون 5

Small Change قيمة التغير الصغير وهي قيمة التغير عندما تضط على سهم المسطرة يمينا أو يسارا. يمكنك استخدام قيمة مناسبة أصغر من تلك التي اخترتها للتغير الكبير ويمكنك في هذا المثال وضع القيمة 1 أو 2

Max هي أقصى قيمة يمكن الوصول إليها وهي القيمة التي ستصل إليها الخلية المرتبطة عند وصول المسطرة إلى أقصى اليمين. على سبيل المثال استخدمتُ القيمة 300

Min هي أقل قيمة يمكن الوصول إليها وهي القيمة التي ستصل إليها الخلية المرتبطة عند وصول المسطرة إلى أقصى اليسار. على سبيل المثال استخدمتُ القيمة 100

معنى ذلك أننا نتوقع تغير قيمة المادة أ من 100 إلى 300 ونريد دراسة تأثير هذا التغير على التكلفة الكلية.

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

vbex38.jpg

قم باستخدام المسطرة المنزلقة لترى كيف تعمل. يمكنك بعد ذلك الضغط على أيقونة حالة التصميم لتغيير خواص المسطرة لكي تتفهم كيفية عمل المسطرة. على سبيل المثال قم بتغيير  Max  إلى 500 والتغير الكبير إلى  100ثم قم بتجربة عمل المسطرة المنزلقة وهكذا.

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

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

مثال 2:

افترض أننا في المثال السابق أردنا دراسة حالات محددة لتغير سعر المادة أ بمعنى أن العر قد يكون 125 أو 145 أو 175. قد يكون ذلك بسبب الرغبة في دراسة احتمالات تغير الأسعار أو وجود نفس المادة بجودة مختلفة وبالتالي بأسعار مختلفة.

سنقوم باستخدام أيقونة Combobox أو الصندوق المتدلي. اضغط على هذه الأيقونة في قائمة الأدوات

 vbex39.jpg

قم بوضع هذه الأيقونة فوق الخلية F3 بنفس الطريقة التي تستخدمها لرسم الأشكال في إكسل أوغيره.

vbex40.jpg

اضغط يمينا على الفأرة ثم اختر “خواص” Properties. تظهر لك نافذة الخواص والتي لن نستخدم منها سوى خاصتين فقط

vbex41.jpg

LinkedCell أي الخلية المرتبطة وهي الخلية التي تتغير قيمتها عند تغيير الاختيار في الصندوق المتدلي Combobox وهي في هذا المثال الخلية F3

ListFill Range أي الخلايا المكتوب فيها خيارات الصندوق المتدلي. في هذا المثال سنقوم بكتابة الخيارات الثلاث في الخلايا L1:L3. بالطبع يمكن كتابة هذه الخيارات في أي مكان آخر ولكن المهم أن يكون موقع الخلايا مسجلا في خواص الصندوق المتدلي

vbex42.jpg 

يمكنك الآن اختبار عمل الصندوق المتدلي. لاحظ أنك قد تواجه مشكلة إذا كنت قد استخدمت Sum function لجمع تكلفة المواد. لذلك يفضل في هذه الحالة استخدام “+” أي جمع الخلايا باستخدام “+”.

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

موضوعات ذات صلة في نفس الموقع:
فائدة تعلم فيجوال بيسك
فيجوال بيسك من إكسل- مقدمة
فيجوال بيسك من إكسل - تطبيقات
فيجوال بيسك / إكسل - تطبيقات متقدمة

مواقع مفيدة حول نفس الموضوع:

Notes on excel Worksheet Control 
Introduction to Microsoft for Applications

14 تعليقاً

« الإدخالات السابقة