Excel VBA by Nedal Shami

الحجم: px
بدء العرض من الصّفحة:

Download "Excel VBA by Nedal Shami"

النسخ

1 نضال الشامي اإلصدار 1.0

2

3

4 أساسيات البرمجة باستخدام Excel VBA المؤلف نضال الشامي اإلصدار األول 2020 هذا الكتاب منشووووووو ر ت ت رخصة المشاع اإلبداعي ن سب الم صن ف - غير تجاري - الترخيص بالمثل CC BY-NC-SA هذه الرخصة تتيح لآلخرين التعديل التحسين وبناء نسخ مشتقة من الم صن ف ولكن في غير األغراض التجارية بشرط ن سب العمل األصلي للمؤلف وترخيص األعمال الجديدة بنفس الرخصة. الغالف نضال الشامي صورة الغالف من االنترنت م ف ظة لصا بها

5

6

7 جد ل الم ت يات جدول المحتويات مقدمة مدخل إلى...Excel VBA إذن ما هي VBA... 7 أهم العناصر المفاهيم في لغة VBA في إكسيل... 8 ال دات البرمجية... VBA Module 8 اإلجرائيات... Procedures 8 اإلجرائية الفرعية الدالة 8... Sub Procedure 9... Function البرمجة كائنية الت جه...10 Object oriented Programming نم ذج الكائنات Object Model التجميعات/المجم عات...12 Collections خصائص الكائنات Objects Properties المتغيرات Variables 2. االستخدامات/الد ال...13 Methods محرر األوامر...(VBE) 15 ما ه م رر أ امر فيج ال بيسيك إلكسيل (VBE) Visual Basic Editor...15 كيفية إظهار م رر األك اد...15 VBE عناصر ن افذ م رر األك اد...17 VBE نافذة الك د...19 Code Window نافذة الخصائص 19...Properties Window نافذة األ امر الف رية...19 Immediate Window كتابة برنامجك األ ل بال...21 VBA vii

8 جد ل الم ت يات فظ ملفات االكسيل التي ت ت ي على ماكر استخدام مسجل الماكرو خط ات انشاء ماكر بسيط يق م بتل ين الصف األ ل بالل ن األصفر...30 كيفية ضع زر للماكر في شريط المهام...32 كيفية ربط ماكر مع زر Button استخدام مراجع الخاليا النسبية عند تسجيل الماكر ف ص الك د البرمجي الم افق للماكر أ شكل المتغيرات... Variables 37 ما ه المتغير...37 أن اع المتغيرات في VBA أن اع البيانات في...39 VBA اإلعالن عن المتغيرات Declaring variables نطاق المتغيرات...43 Procedure only variables المتغيرات في نطاق اإلجرائية فقط...44 Module only variables المتغيرات في نطاق ال دة البرمجية فقط المتغيرات العامة Public variables المتغيرات الثابتة متى ي دث إعادة تعيين Reset الث ابت Static Variables للمتغيرات Constants نطاق الث ابت 49...Constants Scope التعامل مع المتغيرات النصية...49 Working with Strings التعامل مع متغيرات التاريخ Date variables جمل التعيين Assignment Statements المصف فات...51 Arrays اإلعالن عن المصف فات Declaring Arrays المصف فات متعددة األبعاد...52 Multidimensional Arrays المصف فات الديناميكية...53 Dynamic Arrays viii

9 جد ل الم ت يات التعامل مع كائنات النطاق اإلشارة لكائنات النطاق من خالل الخاصية...56 Cells خاصية اإلزا ة...57 Offset خاصية القيمة...57 Value مال ظة...57 خاصية Text خاصية العد...60 Count خاصية HasFormula خاصية 61...Font الخاصية Interior بعض ال ظائف Methods التي يمكن تطبيقها على كائنات النطاق...64 ظيفة الت ديد...64 Select ظيفة المسح Clear Method ظيفة ال ذف...66 Delete method جمل التحكم جملة 67...IF Then مثال على IF- Then جملةElse IF Then IF- Then [Else]- Endif If Then -Elseif Endif جملة استخدام استخدام If ElseIf Else ع امل المقارنات التي يمكن استخدامها...73 Comparison operators فهم الع امل المنطقية...74 العامل 74...AND OR NOT Select Case statement العامل العامل جملة.5.6 ix

10 جد ل الم ت يات.7 جملة جمل التكرار Looping Statements For.Next استخدام Step مع جملة...84 for الخر ج من جملة for من خالل جملة Exit For جملة For المتداخلة...90 جملة 92...For Each Next التكرار باستخدام الجملة...97 Do While Loop جملة Do Until Loop.8 دالتي استخدام دوال ورقة العمل ودوال VBA ما هي الدالة الد ال المدمجة في )Built-In VBA Functions( VBA الد ال Date, Time, and Now Month and MonthName استخدام الدالة TypeName لت ديد ن ع الكائن الم دد د ال VBA 1- دالة التي ال ترجع قيمة :MsgBox 2-3- دالة :InputBox الدالة :Shell طلب المساعدة من م رر األك اد في كتابة الد ال د ال رقة العمل Worksheet Functions.9 بعض األمثلة على استخدام د ال رقة العمل إيجاد ال د األعلى األدنى ثاني أكبر قيمة في نطاق م دد مثال على استخدام الدلة VLOOKUP األخطاء التشغيلية جملة التعامل مع األخطاء في VBA Runtime time errors On Error GoTo جملة Exit Sub x

11 جد ل الم ت يات جملة جملة On Error Resume Next Resume Label جملة Resume إزالة الش ائب من البرامج Debugging Techniques استخدام مربع ال ار Message Box الكتشاف األخطاء استخدام جملة Debug.Print في تتبع األخطاء استخدام VBA Debugger نقاط الت قف Breakpoints ادراج نقاط الت قف نافذة التنفيذ الف ري Immediate Window استخدام نافذة المراقبة Watch Window استخدام نافذة Locals Window 10. تلمي ات لتقليل األخطاء البرمجية األحداث Events ما ه معالج-ال دث Event-Handler أمثلة على استخدام األ داث لتنفيذ أ امر VBA أمثلة على أ داث المصنف Workbook Events ال دث Open Workbook ال دث Before Close مثال على ال دث Activate ال دث Deactivate مثال على ال دث New Sheet مثال على ال دث Before Save بعض األمثلة على أ داث أ راق العمل Worksheets Events ال دث Activate ال دث Deactivate ال دث Select Change xi

12 جد ل الم ت يات.11 ال دث Worksheet Calculate ال دث Worksheet Change االنتقال إلى الك د الخاص ب رقة عمل من خالل اكسيل التفاعل مع المستخدم من خالل مربعات الحوار الدالة MsgBox عرض مربع أخذ استجابة من مربع مربع االدخال ار بسيط ار InputBox.12 مثال على دالة InputBox الدالة Application.InputBox method النماذج UserForms انشاء نم ذج المستخدم إضافة عناصر ت كم للنم ذج عنصر الت كم زر األ امر Command Button اظهار النم ذج Show UserForm كتابة األك اد الخاصة بالنماذج UserForms Codes اغالق النم ذج Unloading a Form إخفاء النم ذج Hiding a form كتابة األك اد الخاصة بأزرار األ امر عنصر الت كم "التسمية الت ضي ية" Label أزرار االختيار Option Buttons أهم الخصائص الخاصة بزر االختيار Option Button صند ق االختيار Check Box القائمة List Box أهم خصائص عنصر الت كم تعبئة القائمة List Box Populating List مثال على استخدام List Box في النماذج xii

13 جد ل الم ت يات استخدام االختيار المتعدد مع القائمة Multi-Select ListBox القائمة المنسدلة Combo Box مثال على استخدام القائمة المنسدلة مربع النص Text Box مثال على استخدام مربع النص مثال. بناء نم ذج لتر يل البيانات إضافة زر لم بيانات نم ذج التر يل إضافة قل خاص برقم المنتج إلى نم ذج التر يل مع عدم السماح بتكرار رقم المنتج xiii

14 جد ل الم ت يات xiv

15 المقدمة مقدمة ت عد لغة البرمجة فيج ال بيسيك للتطبيقات (VBA) Visual Basic for Applications من األد ات الق ية جدا التي يمكن استخدامها مع مجم عة برامج أ فيس ألتمتة المهام المتكررة اضافة ميزات جديدة مثل انشاء د ال جديدة يمكن استخدامها ضمن أ راق العمل في اكسيل أ انشاء برامج خاصة تعمل ضمن البرنامج المضيف )مثل االكسيل( فمثال يمكنك انشاء برنامج إلدارة العمالء أ اصدار الف اتير أ ادخال البيانات غيرها. قد أعلنت شركة مايكر س فت في أكثر من مناسبة بأنها س ف تستمر بدعم لغة VBA أنها ال تن ي التخلي عنها ال ص ة لإلشاعات التي انتشرت ذات مرة بأنها تن ي التخلي عن لغة.VBA على الرغم من الق ة المر نة التي ت فرها لغة VBA إال أنك س ف تتفاجأ من مدى سه لتها. يث أنها تقدم لك العديد من األد ات التي تسهل عليك كتابة برامجك يعتبر م رر األك اد الخاص ب VBA أ د أفضل البيئات البرمجية أكثرها سه لة مر نة يث يتمتع بنظام مساعدة Help فعال يساعدك في أثناء كتابة أك ادك من خالل ميزات مثل االكمال التلقائي اكتشاف األخطاء الف ري غيرها من الميزات. بل إنك تستطيع انشاء بعض برامج ال VBA بد ن كتابة سطر برمجي ا د ذلك عن طريق استخدام مسجل الماكر! يث أنك في هذه ال الة تق م بتشغيل مسجل الماكر ثم تق م بأداء المهام التي تريد أن يق م الماكر بتكرارها عند االنتهاء ت قف التسجيل تق م ب فظ الماكر الستدعائه عند ال اجة. هذه ال سيلة فعالة ليس فقط إلنجاز أعمالك بسرعة دقة بل أيضا للتعلم يث أنك إذا أردت أن تعرف كيفية القيام بعملية معينة من خالل ال VBA فإنه بإمكانك أن ت شغل مسجل الماكر ثم تق م بأداء تلك العملية ثم ت قف المسجل تعرض الك د الم افق للماكر الذي تم تسجيله. 1

16 المقدمة من الميزات العظيمة للغة VBA أن الك د الخاص بها يستخدم كلمات جمل اض ة قريبة من استخدامنا الي مي مما يسهل كتابة قراءة الك د. خذ عندك الك د التالي كمثال: Worksheets("sheet1").Activate Range("A1").Value = "Hello World!!" Range("A1").Interior.Color = vbgreen - يكفي أن يك ن لديك معرفة بأساسيات االكسيل لتدرك أن هذا الك د يق م بتنشيط رقة العمل Sheet1 ثم يكتب جملة World!!" "Hello بداخل الخلية A1 يق م بتل ين تلك الخلية بالل ن األخضر تى ل لم يكن لك خبرة مسبقة بأي من لغات البرمجة. يغطي هذا الكتاب أساسيات برمجة االكسيل بلغة VBA من الصفر انطالقا من فرضية أن القارئ ليس له سابق خبرة بالبرمجة س اء بلغة VBA أ غيرها. إذا لم يكن لك سابق خبرة بتسجيل استخدام دات الماكر أ كتابة أك اد VBA فإن هذا الكتاب سيأخذ بيدك خط ة خط ة على طريق اجادة التعامل مع هذه اللغة. لقد اعتمدنا في كتابة هذا الكتاب على تقديم المعل مة بأبسط شكل على تقديم أمثلة راعينا فيها قدر المستطاع أن تك ن ذات فائدة عملية في نفس ال قت ت ضح المبدأ التي ضعت ألجله. بالنسبة لألمثلة فقد رأينا أن عدم تعقيدها يساهم في ص ل الفكرة بشكل أفضل للقارئ بد ن تشتيت لذلك فقد بسطنا األمثلة قدر المستطاع بد ن اخالل بفكرة المثال أ بالمبدأ الذي ي ض ه المثال. من المفترض أنك إذا فهمت المثال الم عطى بشكل جيد فإنه س ف يك ن من السهل عليك تط ير المثال ليصبح أكثر تعقيدا. على الرغم من أن هذا الكتاب مكت ب خصيصا لبرمجة االكسيل بلغة VBA إال أن إلمامك باألساسيات المذك رة في الكتاب س ف يسهل عليك من تعلم برمجة برامج أخرى من طقم برامج أ فيس )مثل رد أكسس( بلغة.VBA بل إن األساسيات المذك رة هنا س ف تساعدك في تعلم أي لغة برمجة أخرى مثل بايث ن أ جافا سكربت. تم تقسيم الكتاب إلى اثني عشر فصال هي كالتالي: الفصل األول مدخل إلى : VBA فيه تم التطرق إلى أساسيات لغة VBA أهم العناصر المك نة لها مثل ال دات النمطية الد ال االجرائيات كما تم شرح مفه م البرمجة كائنية الت جه 2

17 المقدمة Object Oriented Programming نم ذج الكائنات Object Model خصائصه. يعد هذا الفصل أهم فص ل الكتاب ه يمهد يضع األساس للفص ل الال قة. الفصل الثاني محرر األكواد :VBE فيه ثم التعرض لم رر األك اد Visual Basic Editor هي البيئة البرمجية الخاصة بلغة VBA التي يتم من خاللها ادخال تعديل األك اد. تم شرح عناصر ن افذ م رر األك اد باستفاضة كما تم في هذا الفصل شرح كيفية كتابة برنامجك األ ل في VBA كيفية فظه استدعاءه عند ال اجة بأكثر من طريقة. الفصل الثالث مسجل الماكرو: فيه تم شرح طريقة استخدام مسجل الماكر Macro Recorder الذي يعد أبسط أسرع الطرق إلنشاء دات الماكر )البرامج المكت بة بلغة VBA يطلق عليها ماكر (. هنا تم شرح كيفية تسجيل فظ الماكر ثم كيفية ف ص الك د الم افق للماكر الم سجل التعديل عليه. الفصل الرابع المتغيرات: فيه تم شرح مفه م المتغيرات Variables أن اعها كيفية اإلعالن عنها نطاقها كيفية تعيين قيم لتلك المتغيرات. كما تم التطرق في هذا الفصل للمصف فات Arrays بأن اعها المختلفة كيفية اإلعالن عنها التعامل معها. الفصل الخامس التعامل مع كائنات النطاق: فيه تم التطرق لكائنات النطاق Range Objects خصائصها تم شرح أشهر ال ظائف Methods التي يمكن تطبيقها على النطاقات. الفصل السادس جمل التحكم: من خالل جمل الت كم Control statements تستطيع الت كم بسير البرنامج بناء على ت قق شرط أ مجم عة من الشر ط. في هذا الفصل تم التطرق لجمل الت كم في VBA مثل Select.. Case IF.Then كيفية استخدامها مع العديد من األمثلة. كما تم شرح الع امل المنطقية Logical Operators كيفية استخدامها مع جمل الت كم. الفصل السابع جمل التكرار: من خالل جمل التكرار تستطيع تكرار تنفيذ أ امر م ددة تى يت قق شرط معين. هنا تم شرح العديد من جمل التكرار مثل Do..While For.Next غيرها بتفصيل كبير بعدة االت أمثلة. الفصل الثامن الدوال: الدالة Function هي عبارة عن مجم عة من األسطر البرمجية تم تنظيمها بشكل معين ب يث تق م ببعض ال سابات أ اإلجراءات من ثم ترجع قيمة ا دة. في هذا الفصل تم التطرق لما هي الد ال أن اع الد ال في VBA يث أنها تنقسم لثالثة أن اع: الد ال المدمجة في VBA د ال رقة العمل الد ال المخصصة. تم شرح األن اع الثالثة مع إعطاء أمثلة على كل ن ع

18 المقدمة الفصل التاسع التعامل مع األخطاء: األخطاء من األم ر الشائعة جدا عند التعامل مع VBA مع أي لغة برمجة أخرى. في هذا الفصل تم التطرق ألن اع األخطاء التي يمكن أن تظهر أثناء تشغيل برامج VBA كيفية ت ديد مكان الخطأ ثم التعامل معه بأكثر من طريقة. كما تم التطرق في هذا الفصل لمفه م "إزالة الش ائب" Debugging تم شرح العديد من التقنيات التي يمكن استخدامها إلزالة ش ائب البرامج. الفصل العاشر األحداث: ا دى طرق تنفيذ اجرائيات VBA هي تنفيذها تلقائيا عند د ث دث معين. ال دث Event ه ببساطة عبارة عن شيء دث لالكسيل. في هذا الفصل س ف نتعرف على األ داث األكثر شي عا في االكسيل كيفية االستفادة منها في تنفيذ االجرائيات بشكل تلقائي. الفصل الحادي عشر التفاعل مع المستخدم من خالل دالتي MsgBox و :InputBox فيه تم عرض االت مختلفة لكل من دالة MsgBox التي تق م بعرض البيانات ضمن مربع ار مع إمكانية أخذ تغذية راجعة من المستخدم دالة InputBox التي تستخدم إلدخال البيانات من خالل مربع ار. إضافة إلى ذلك فقد تم التطرق لدالة Application.InputBox التي ت ستخدم الدخال أشياء مثل المعادالت أ مراجع النطاقات. الفصل الثاني عشر النماذج: تعد النماذج User Forms من ال سائل الجيدة إلدخال البيانات عرضها. يث أنك من خاللها تستطيع الت كم بكيفية ادخال البيانات من يث ترتيب ادخال البيانات أ اختيار ال سيلة المناسبة لكل ن ع من البيانات المطل بة أ اجراء عملية الت قق من االدخال للبيانات المدخلة غيرها من األشياء. يمكنك أيضا الت كم بكيفية عرض البيانات بالشكل الذي يالئم طبيعة البيانات المعر ضة مما يعطيك مر نة عالية جدا في التعامل مع البيانات. في هذا الفصل تم شرح كيفية انشاء النماذج كيفية إضافة عناصر الت كم عليها مثل أزرار االختيار الق ائم المنسدلة غيرها كيفية برمجة عناصر النم ذج لالستجابة لأل داث المختلفة مثل االستجابة للضغط على األزرار أ االختيار من القائمة المنسدلة لمن موجه هذا الكتاب هذا الكتاب م جه لمستخدمي االكسيل الذين يرغب ن باكتساب المهارات األساسية للبرمجة بلغة VBA مما سيسهم باالنتقال بمست ى مهارتهم في االكسيل لألعلى. للمضي قدما في هذا الكتاب يجب أن يتمتع القارئ بمست ى مت سط على األقل في استخدام برنامج اكسيل ذلك يشمل أساسيات برنامج اكسيل التعامل مع الخاليا النطاقات أ راق العمل استخدام أد ات االكسيل المختلفة مثل الجدا ل 4

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

20 المقدمة 6

21 مدخل إلى VBA الفصل األول.1 مدخل إلى Excel VBA في هذا الفصل س ف نتعرف إلى أساسيات لغة البرمجة VBA لالكسيل س ف نتطرق إلى العناصر األساسية المك نة لها مما يمهد الطريق للفص ل الال قة. المعل مات ال اردة في هذا الفصل مهمة جدا تعتمد عليها بشكل كلي الفص ل القادمة لذا ننصح بقراءته بعناية قبل االنتقال لباقي الفص ل. إذن ما هي VBA لغة VBA هي اختصار ل Visual Basic for Application هي لغة برمجة مقدمة من مايكر س فت تستطيع من خاللها برمجة تطبيقات األ فيس مثل ال رد االكسيل باإلضافة لبعض البرامج األخرى مثل أ ت كاد للقيام بمهام غير م ج دة في تلك البرامج. بالنسبة لالكسيل هناك العديد من المهام التي تستطيع أن تق م بها VBA مثل: أتمتة العمليات المتكررة الختصار ال قت الجهد. تط ير د ال جديدة غير م ج دة باالكسيل. انشاء نماذج لتسهيل ادخال عرض البيانات. انشاء ظائف إضافية Add-ins لالكسيل. إضافة النص ص المتكررة مثل اسم الشركة أ عن ان االيميل غيرها من البيانات يث يمكنك برمجة ذلك تعيين زر إلدراج تلك النص ص بسه لة سرعة.... غيرها الكثير 7

22 الفصل األ ل أهم العناصر والمفاهيم في لغة VBA في إكسيل الوحدات البرمجية VBA Module الك د البرمجي لل VBA يتم إدخاله بداخل دة برمجية VBA Module س اء أكان الك د مدخال يد يا أ من خالل مسجل دات الماكر.Macro Recorder يمكن مشاهدة ت رير الك د من خالل "م رر األك اد "VB Editor سيتم التطرق لمحرر األكواد VBE بتفصيل كب ري ي ف الفصل القادم "استخدام محرر األكواد "VBE Sub Procedures ت ت ي ال دة البرمجية VBA Module.Functions على إجرائيات فرعية /أ د ال اإلجرائيات Procedures تنقسم االجرائيات إلى ن عين: 1- االجرائيات الفرعية Sub-Procedures 2- الد ال Function اإلجرائية الفرعية : Sub Procedure هي عبارة عن مجم عة من األ امر البرمجية التي تهدف إلى ال ص ل إلى نتيجة م ددة. يجب أن تبدأ اإلجرائية بالكلمة المفتا ية Sub ثم اسم اإلجرائية متب عا بق سين فارغين ) ( يلي ذلك الك د البرمجي تنتهي بجملة.End Sub فيما يلي مثال على إجرائية تق م بعرض رسالة التر يب VBA" :"Hello Sub Hello_VBA() MsgBox ("Hello VBA") End Sub كما تم ذكره سابقا ال ظ أن اإلجرائية بدأت ب Sub انتهت ب End Sub ما بينهما الك د البرمجي الخاص باإلجرائية في التنا الك د يق م بعرض مربع ار يعرض الجملة VBA"."Hello اإلجرائية التي ال تظهر النتائج بالشكل المت قع يطلق عليها Substandard )إجرائية د ن المست ى( 8

23 مدخل إلى VBA الدالة :Function هي أيضا عبارة عن إجرائية لكنها بخالف اإلجرائية الفرعية تق م بإرجاع قيمة م ددة. بإمكانك استدعاء الدالة من داخل إجرائية أخرى أ استخدامها من داخل رقة العمل بنفس طريقة استخدام د ال االكسيل المدمجة.Built-in functions تبدأ الدالة بالكلمة المفتا ية Function متب عا باسم الدالة ثم الك د لبرمجي للدالة تنتهي بالجملة.End Function من الممكن أن تأخذ الدالة مدخالت )تسمى معامالت الدالة )Function parameters/arguments لكنها في جميع األ ال يجب أن ترجع قيمة م ددة. الدالة التالية هي مثال على دالة تق م بأخذ رقمين من المستخدم من ثم ترجع اصل جمعهما: Function Add2Numbers(num1, num2) Add2Numbers = num1 + num2 End Function ال ظ هنا أن الدالة قد تم تصميمها كي تأخذ معاملين هما num2 num1 من ثم ترجع نتيجة جمعهما من خالل المتغير Add2Numbers هنا مال ظة مهمة جدا هي أن القيمة التي ترجعها الدالة يجب أن ي ملها متغير له نفس اسم الدالة. مالحظة///// للمزيد حول المتغ ريات انظر الفقرة الخاصة بالمتغ ريات ي ف هذا الفصل أو انظر الفصل الرابع بعد ادخال الدالة ضمن إ دى ال دات البرمجية يصبح باإلمكان استخدامها من داخل أ راق العمل كما يظهر لنا في الشكل 1-1. كما أنه باإلمكان استدعاء الدالة من داخل اإلجرائيات الفرعية أ د ال أخرى. Figure 1-1 9

24 الفصل األ ل في الك د التالي تم استدعاء الدالة Add2Numbers من داخل اإلجرائية الفرعية TestAdd Sub TestAdd() arg1 = 10 arg2 = 20 result = Add2Numbers(arg1, arg2) MsgBox result End Sub البرمجة كائنية التوجه Object oriented Programming فيج ال بيسيك للتطبيقات هي عبارة عن لغة برمجة كائنية الت جه Object Oriented.Programming language المبدأ األساسي للغات البرمجة كائنية الت جه هي أن التطبيقات/البرمجيات )في التنا اإلكسيل( تتك ن من العديد من الكائنات Objects كل كائن له مجم عة من الصفات/الخصائص Properties مجم عة من االستخدامات تسمى الد ال.Methods االكسيل ي ت ي على العديد من الكائنات مثل الخاليا Cells أ راق العمل Worksheets المخططات Charts األشكال Shapes غيرها الكثير. بإمكانك أن تتعامل مع هذا المبدأ كما تتعامل مع أي كائن في ال ياة ال اقعية لنأخذ السيارة كمثال السيارة ككائن لها مجم عة من الخصائص Properties التي تصفها مثل الل ن الط ل العرض االرتفاع. لها مجم عة من االستخدامات/الطرق Method مثل الت رك لألمام للخلف كما أن لها مجم عة من األ داث Events التي ت دد الة السيارة ال الية مثل أن السيارة مت قفة أ مت ركة هذه األ داث يمكن استغاللها كقادح Trigger لتطبيق أ امر معينة عن بدء ال دث. الك د الذي يتم تطبيقه عند ت قق دث معين يسمى.Event Handler 10

25 مدخل إلى VBA االكسيل بالمثل ي ت ي على العديد من الكائنات التي لها خصائص د ال/طرق أ داث تطبق عليها فمثال المصنف Workbook ه عبارة عن كائن له مجم عة من الخصائص Features/Properties مثل اسم المصنف Name جمه Size مجم عة من الد ال Methods مثل فتح المصنف Open فظ المصنف.Save له مجم عة من األ داث التي يمكن أن ت طبق عليه مثل دث فتح أ اغالق المصنف. نموذج الكائنات Object Model يعد نم ذج الكائنات إلكسيل ه القلب النابض لبرمجة VBA في برنامج االكسيل كل أمر برمجي يتم من خالل VBA ي رسل من خالل نم ذج الكائنات. نم ذج الكائنات ه عبارة عن قائمة ط يلة بالكائنات التي ي ت يها االكسيل مثل أ راق العمل النطاقات الخاليا. كل شيء في االكسيل ه عبارة عن كائن.Object ي فر لنا االكسيل مجم عة كبيرة من الكائنات التي يمكن الت كم بها من خالل برمجة.VBA تشتمل الكائنات على المصنفات أ راق العمل الخاليا المخططات غيرها الكثير. الكائنات تم ترتيبها بشكل هرمي Hierarchical arrangement ب يث أن بعض الكائنات ت ت ي كائنات أخرى. في أعلى الهرم يقع برنامج االكسيل نفسه. نعم االكسيل بذات نفسه ه عبارة عن كائن يدعى.Application كائن البرنامج Application ي ت ي على كائنات مثل المصنفات Workbooks ال ظائف اإلضافية.Add-Ins ي ت ي كائن المصنف Workbook على كائنات مثل أ راق العمل Worksheets المخططات.Charts كائن رقة العمل Worksheet ي ت ي على كائنات مثل النطاقات Ranges الخاليا Cells الجدا ل الم رية.PivotTables المصطلح "نم ذج الكائنات "Object Model يطلق على كيفية ترتيب الكائنات بداخل اكسيل. Application Workbooks Workshets Ranges Cells 11

26 الفصل األ ل التجميعات/المجموعات Collections الكائنات من نفس الن ع يطلق عليها "مجم عة "Collection فعلى سبيل المثال "مجم عة أ راق العمل "Worksheets collection ت ت ي على جميع أ راق العمل بداخل المصنف مجم عة الجدا ل الم رية PivotTables collection ت ت ي على جميع الجدا ل الم رية بداخل المصنف. جدير بالمال ظة أن المجم عات Collections هي ب د ذاتها عبارة عن كائنات.Objects تتم اإلشارة إلى كائن ما عن طريق ت ديد م قعه في التسلسل الهرمي للكائنات باستخدام النقطة كفاصلة. فمثال يمكن اإلشارة إلى المصنف Workbook.xlsx من خالل: Application.Workbooks ( "Workbook1.xlsx") هنا تمت اإلشارة إلى المصنف Workbook1.xlsx ضمن مجم عة المصنفات Workbook collection يث تقع مجم عة المصنفات ضمن "كائن البرنامج."Application object لت سعة هذا ال صف ليشمل مست ى آخر يمكن اإلشارة ل رقة العمل Sheet1 ال اقعة ضمن المصنف Workbook1.xlsx من خالل: Application.Workbooks("Workbook1.xlsx").Worksheets("Sheet1") للذهاب لمست ى آخر يمكن اإلشارة إلى خلية م ددة بداخل المصنف من خالل: Application.Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("A1") عند ذف مرجع م دد يستخدم االكسيل الكائنات النشطة.Active objects فمثال إذا كان المصنف الم ج دة في رقة العمل Sheet1 ه المصنف النشط أردنا أن نشير للخلية A1 Workbook1.xlsx يمكن استخدام: Worksheets("Sheet1").Range("A1") إذا كانت رقة العمل Sheet1 هي رقة العمل النشطة فيمكن اإلشارة إلى الخلية A1 من خالل: Range("A1") 12

27 مدخل إلى VBA خصائص الكائنات Objects Properties كل كائن له مجم عة من الخصائص التي يمكن اعتبارها كإعدادات الكائن.Object settings فمثال كائن النطاق Range object له خصائص مثل العن ان Address القيمة Value بالمثل كائن رقة العمل Worksheet object له خصائص مثل االسم Name عرض ف اصل الصف ات.DisplayPageBreaks من الممكن استخدام VBA لعرض قيمة خاصية م ددة أ تعديلها. يمكن اإلشارة إلى خاصية كائن م دد من خالل ضم اسم الخاصية إلى اسم الكائن مفص ال بينهما بنقطة. فيمكن اإلشارة مثال إلى قيمة الخلية A1 بداخل رقة العمل Sheet1 من خالل: Workbooks("Workbook1.xlsx").Worksheets("Sheet1").Range("A1").Value المتغيرات Variables المتغير ه عبارة عن عنصر له اسم يستخدم لتخزين البيانات. من الممكن استخدام المتغيرات في ال Object property لتخزين أشياء مثل النص ص القيم أ اعدادات الخصائص للعناصر VBA.settings إلعطاء قيمة الخلية A1 في رقة العمل Sheet1 للمتغير GoodsCost استخدم الصيغة التالية: GoodsCost = Worksheets("Sheet1").Range("A1").Value سيتم التطرق للمتغ ريات بتفصيل كب ري ي ف الفصل الرابع االستخدامات/الدوال Methods الدالة Method هي عبارة عن اجراء يق م االكسيل بتنفيذه على عنصر ما. على سبيل المثال أ د الد ال الخاصة بالكائن Worksheet هي عبارة عن دالة ال ذف Delete هي تق م ب ذف رقة العمل. بإمكانك أن تطبق دالة ما على أ د الكائنات من خالل ارفاق اسم الدالة للكائن المطل ب ب يث يفصل بينهما النقطة. كمثال على تطبيق دالة على أ د الكائنات انظر المثال التالي يث يق م السطر البرمجي التالي ب ذف رقة العمل المسماة :Sheet1 Worksheets("Sheet1").Delete 13

28 الفصل األ ل ما تم ذكره في الفقرات السابقة يمثل المك نات األساسية للغة قبل االنتقال للفص ل الال قة. VBA تأكد من فهمك الجيد لتلك المفاهيم 14

29 م رر األ امر VBE (VBE) الفصل الثاني.2 محرر األوامر في هذا الفصل س ف نتعرف على م رر األك اد VBE الذي من خالله يتم ادخال أ تعديل الك د البرمجي ل دات الماكر. كما سنق م بكتابة أ ل برنامج VBA سنتعرف على الطرق المختلفة الستدعاء تشغيل الماكر. ما هو محرر أوامر فيجوال بيسيك إلكسيل (VBE) Visual Basic Editor قد ال يعرف معظم مستخدمي االكسيل أن هناك جانبا خفيا لإلكسيل بخالف أ راق العمل المخططات الجدا ل الم رية غيرها من األد ات. هذا الجانب ه م رر أ امر فيج ال بيسيك VBE يث أنه يك ن مت اجدا د ما في الخلفية يتم تنفيذ أية أ امر م ج دة بداخله إذا استدعت ال اجة. هاتان البيئتان تعمالن بشكل متزامن تتبادالن البيانات مع بعضهما البعض قتما استدعت ال اجة. م رر VBE ه عبارة عن بيئة تط ير برمجية Integrated Development Environment IDE يث بإمكانك ادخال ت رير تنفيذ األك اد البرمجية الخاصة بلغة VBA من خاللها. كيفية إظهار محرر األكواد VBE أسرع طريقة لل ص ل لم رر األك اد هي من خالل الضغط على زري.Alt+F11 كما أنه باإلمكان ال ص ل للم رر من خالل تب يب المط ر.Developer ال يظهر تب يب المط ر بال ضع االفتراضي انما يمكن اظهاره من خالل تخصيص شريط األد ات Ribbon من خالل التالي: 15

30 الفصل الثاني انقر بزر الما س األيمن ف ق أي مكان على شريط األد ات Ribbon ثم اختر تخصيص الشريط Customize the Ribbon س ف يظهر لك مربع ال ار "خيارات اكسيل "Excel Options في الجانب األيمن من مربع ال ار صع عالمة الت ديد على المط ر Developer كما في الشكل Figure

31 م رر األ امر VBE لتشغيل م رر األك اد من خالل شريط المط ر اذهب إلى تب يب Developer ثم اختر األمر Visual.Basic Figure 2-2 عناصر ونوافذ محرر األكواد VBE ي ت ي م رر األك اد على العديد من الن افذ التي يمكن الت كم بإظهارها إخفائها سب ال اجة. في غالب األ قات أنت قد ت تاج ألربعة ن افذ أساسية هي: -1 مستكشف المشاريع Project Explorer 2- نافذة الك د البرمجي Code Window -3 نافذة الخصائص Properties Window 4- نافذة األ امر الف رية Immediate Window 17

32 الفصل الثاني Figure 2-3 مستكشف المشاريع Project Explorer يظهر مستكشف المشاريع مخططا هيكليا شجريا Tree diagram تظهر من خالله المصنفات المفت ة بما فيها من أ راق عمل )ذلك يشمل المصنفات المخفية )Hidden workbook كما تظهر من خالله ال دات البرمجية Modules الخاصة بكل مصنف مفت ح. من الممكن ت سعة Expand أ طي العناصر القابلة للطي من خالله. 18

33 م رر األ امر VBE عند النقر بالما س نقرا مزد جا على أ د العناصر أسفل Microsoft Excel Objects أ Modules يظهر لنا ك د ال VBA الخاص بهذا العنصر في نافذة الك د.Code Window إذا لم يكن مستكشف المشاريع ظاهرا فيمكن اظهاره من خالل الضغط على Ctrl + R الذهاب إلى.View Project Explorer أ من خالل نافذة الكود Code Window نافذة الك د هي المكان الذي تق م بإدخال الك د فيه كل عنصر يظهر في مستكشف المشاريع له نافذة ك د مرتبطة به. لعرض الك د الخاص بأي عنصر انقر نقرا مزد جا ف ق العنصر المطل ب فيتم اظهار الك د الخاص به في نافذة الك د )عادة تك ن على يمين مستكشف المشاريع(. نافذة الخصائص Properties Window تعرض نافذة الخصائص مجم عة الخصائص الخاصة بالعنصر الم دد فمثال إذا كان لديك رقة عمل باسم Sheet1 ترغب بعرض خصائصها يكفي اختيار هذه ال رقة من مستكشف المشاريع ليتم عرض خصائصها في نافذة الخصائص كذلك األمر بالنسبة ألي عنصر آخر في مستكشف المشاريع. من الممكن تعديل الخصائص من خالل تلك النافذة. هذه الخصائص ت ستخدم للت كم في مظهر سل ك العنصر. فمثال في الشكل 2-4 تم ت ديد رقة العمل Sheet1 بالتالي تم اظهار خصائصها في نافذة الخصائص من هذه الخصائص هناك خاصية DisplayRightToLeft للت كم في اتجاه رقة العمل ( هي من الخصائص المستخدمة للت كم في المظهر( بينما الخاصية EnableCalculation تستخدم للت كم في كيفية اجراء اال تساب بداخل رقة العمل يد ي أم تلقائي ( هي من الخصائص المستخدمة للت كم في سل ك العنصر(. نافذة األوامر الفورية Immediate Window من خالل نافذة األ امر الف رية يمكن تنفيذ األ امر مباشرة أي أنك غير مضطر إلدخال األمر الذي تريد تطبيقه ضمن إجرائية. يمكنك كتابة الجملة البرمجية ثم الضغط على مفتاح اإلدخال ليتم تنفيذ الجملة مباشرة مما يعطيك إمكانية التقييم الف ري للجمل البرمجية. عادة يتم اللج ء لهذه النافذة عند اجراء 19

34 الفصل الثاني عمليات تتبع األخطاء التص يح.Debugging إذا لم تكن هذه النافذة ظاهرة فيمكن اظهارها من خالل الضغط على.Ctrl + G Figure

35 م رر األ امر VBE كتابة برنامجك األول بال VBA الهدف من هذه الفقرة ه ت ضيح كيفية ادراج الك د في ملف االكسيل من ثم كيفية تشغيله بأكثر من طريقة ال تقلق إذا بدا لك الك د غير مفه م فس ف يتم شرح ت ضيح عناصره بشكل مفصل في الفص ل الال قة. للبدء بكتابة برنامجك األ ل في ال VBA اتبع الخط ات التالية: افتح ملف اكسيل جديد ثم اذهب إلى م رر األك اد عن طريق الضغط على زري Alt+F11 أ من خالل الذهاب إلى تب يب المط ر Developer ثم الضغط على زر.Visual Basic أدرج دة برمجية جديدة Module من خالل الذهاب إلى قائمة "ادراج "Insert ثم Module أ من خالل النقر بزر الما س األيمن ف ق اسم المشر ع أ المصنف في نافذة مستكشف المشاريع ثم اختيار Insert Module أ من خالل شريط األد ات القياسي كما ه ظاهر بالشكل 2-5 أ الشكل Figure

36 الفصل الثاني Figure 2-6 من خالل مستكشف المشاريع اختر ال دة البرمجية Module التي قمت ادراجها ثم رك مؤشر الما س إلى جزء الك د في األيمن )إذا لم يكن جزء الك د ظاهرا ألي سبب انقر بزر الما س األيمن ف ق ال دة البرمجية ثم اختر.View Code أدخل الك د التالي في جزء الك د Sub HelloVBA() -3-4 بهذا تك ن قد أدخلت برنامجك األ ل لتشغيله اتبع إ دى الخط ات التالية: MsgBox ("Hello VBA!!") End Sub من خالل م رر األك اد اضغط على زر Run أ اذهب إلى قائمة Run ثم اضغط Run Sub/UserForm من رقة العمل اذهب إلى تب يب Developer ثم اضغط على زر Macros من مربع ال ار الذي س ف يظهر اختر اسم الماكر من مربع Macro name ثم اضغط على زر.Run شكل 2-7. من الممكن إعطاء الماكر اختصار على ل ة المفاتيح. لعمل ذلك اختر اسم الماكر كما في الخط ة رقم 2 ثم اضغط على زر Options ثم من نافذة Macro options دد االختصار

37 م رر األ امر VBE الذي تريده من خالل ادخال األزرار المطل بة في Shortcut key أدخل صف للماكر في الخانة المخصصة لل صف Description كما في الشكل 2-7 من الممكن ربط الماكر مع شكل عن طريق ادراج الشكل المطل ب ثم النقر بالزر األيمن عليه اختيار Assign macro كما في الشكل 2-8 من الممكن ربط الماكر مع زر Button من خالل الذهاب إلى تب يب Developer ثم إلى Insert ثم اختيار Button من ثم ضع الزر في المكان المطل ب على رقة العمل بمجرد ضع الزر على رقة العمل يظهر لنا مربع ار يطلب من ت ديد الماكر المرتبط مع هذا الزر ن دد الماكر ثم نضغط على.OK انظر شكل Figure

38 الفصل الثاني Figure 2-8 Figure

39 م رر األ امر VBE أمان الماكرو Macro security تعد لغة VBA من لغات البرمجة الق ية جدا التي يمكن استغاللها لعمل برامج ضارة فمن الممكن مثال انشاء برامج باستخدامها تق م ب ذف الملفات أ ارسال الملفات ألجهزة اس ب أخرى أ تعطيل نظام التشغيل غيرها من البرامج الخبيثة. لذلك قامت شركة مايكر س فت بدءا من إكسيل 2007 بإضافة هذه الخاصية لمساعدة المستخدمين على ماية أنفسهم من البرامج الضارة التي قد تك ن مكت بة ب.VBA يظهر الشكل 2-10 إلى: إعدادات األمان الخاصة بالماكر التي يمكن ال ص ل إليها من خالل الذهاب File Options Trust Center Macro Settings هناك أربعة خيارات للتعامل مع الماكر بال ضع االفتراضي يتم ت ديد الخيار الثاني الذي يق م بتعطيل كافة دات الماكر مع اعطاء اشعار للمستخدم تى يستطيع السماح بتشغيل الماكر إن رغب. يظهر اإلشعار عادة في أعلى المصنف كشريط أصفر الل ن مع ج د زر لتفعيل الماكر )كما في الشكل 2-10(. Figure

40 الفصل الثاني Figure 2-11 حفظ ملفات االكسيل التي تحتوي على ماكرو ل فظ ملف اكسيل بداخله ماكر يجب اختيار االمتداد ( Workbook Excel Macro-Enabled )*.xlsm ذلك من خالل الذهاب إلى File ثم Save as ثم اختيار مكان ال فظ ت ديد ن ع الملف من خالل القائمة المنسدلة Save as type كما في الشكل يمكنك أيضا الضغط على زر F12 لعرض مربع ال ار الخاص ب Save as مباشرة. 26

41 م رر األ امر VBE Figure

42 الفصل الثاني 28

43 مسجل الماكر الفصل الثالث.3 استخدام مسجل الماكرو في هذا الفصل س ف نتعرف على أسهل الطرق للبدء في استخدام VBA هي تسجيل دات الماكر باستخدام مسجل الماكر Macro Recorder هي ميزة مدمجة في االكسيل.Built-In باستخدام الماكر س ف يك ن بإمكانك أتمتة العمليات المتكررة المضجرة مما سيسرع من انجاز أعمالك يقلل من نسبة د ث األخطاء. كما أن بإمكانك أن تق م بال ص ل للك د البرمجي الناتج عن تسجيل الماكر التعديل فيه مما يعطيه ق ة مر نة قص ى. باإلضافة إلى ذلك يعد مسجل الماكر من ال سائل الممتازة لتعلم VBA يث أنك إذا اردت أن تعرف كيفية اتمام تنفيذ عملية معينة باستخدام برمجة VBA فبإمكانك تسجيل ماكر يق م بأداء تلك العملية من ثم تق م بعرض ك د ال VBA الخاص بذلك الماكر. لبدء التعامل مع الماكر يجب أن يتم اظهار شريط المط ر Developer عن طريق الضغط بزر الما س األيمن ف ق شريط األد ات Ribbon ثم Customize the ribbon )تخصيص الشريط( ثم نختار Developer 29

44 الفصل الثالث Figure 3-1 خطوات انشاء ماكرو بسيط يقوم بتلوين الصف األول باللون األصفر 1. نذهب الى شريط المط ر ثم نضغط على Record Macro )تسجيل ماكر ) 2. يظهر لنا مربع ال ار.Record Macro نعطي الماكر اسما اختصارا ل أردنا من خالل البند Shortcut key ن دد أين سيتم تخزين الماكر من خالل القائمة المنسدلة Store.Macro in ت ت ي القائمة المنسدلة Store Macro in على ثالث خيارات هي كالتالي: This workbook )هذا المصنف( يث يتم تخزين هذا الماكر في هذا المصنف فقط يجب في هذه ال الة تخزين المصنف بامتداد xlsm 30

45 مسجل الماكر New Workbook )مصنف جديد( يث سيتم فتح مصنف جديد تسجيل الماكر بداخله. Figure 3-2 Personal Workbook )مصنف الماكر الشخصي(. هذا المصنف م ج د بال ضع االفتراضي لكنه غير مفعل عند تفعيله أ ل مرة )عن طرق تخزين ماكر فيه( يتم تشغيله بعدها في كل مرة يتم فتح االكسيل بها لكنه يك ن مخفيا. اذا اردت أن يك ن الماكر متا ا في كل المصنفات على نفس جهاز ال اس ب يجب أن يخزن في مجلد الماكر الشخصي بمجرد أن تضغط م افق يبدأ الماكر بالتسجيل نبدأ بإجراء العمليات التي نريد للماكر أن يسجلها فنذهب للصف األ ل نعطيه الل ن األصفر. نضغط اآلن على زر إيقاف التسجيل Stop the Recording الم ج د في شريط المط ر أ الم ج د في شريط ال الة/المعل مات.status bar

46 الفصل الثالث الستدعاء الماكر الذي تم تسجيله نستخدم اختصار الكيب رد الخاص بذلك الماكر أ نذهب الى شريط المط ر ثم نضغط زر Macros نختار الماكر المطل ب. كيفية وضع زر للماكرو في شريط المهام 1. نضغط بالزر األيمن للما س ف ق شريط األد ات Ribbon ثم نختار Customize the ribbon )تخصيص الشريط( 2. ننشئ عالمة تب يب جديدة New Tab أ مجم عة جديدة New Group 3. نضيف الماكر المطل ب لهذا التب يب أ المجم عة. Figure

47 مسجل الماكر كيفية ربط ماكرو مع زر Button أو شكل ندرج الزر من خالل شريط المط ر كما بالشكل 3-4 أ ندرج الشكل المطل ب من تب يب ادراج Insert كما في الشكل 3-5. نضغط بالزر األيمن على الزر أ الشكل ثم نختر Assign Macro )تعيين ماكر ) نعيين الماكر المطل ب..1.2 Figure 3-4 Figure

48 الفصل الثالث استخدام مراجع الخاليا النسبية عند تسجيل الماكرو الماكر الذي أنشأناه في المثال السابق يستخدم مراجع الخاليا المطلقة ( ه ال ضع االفتراضي( هذا يعني أنك ل كنت في أي مكان داخل رقة العمل نفذت الماكر فس ف يتم تنفيذه على نفس الخاليا التي ن فذ عليها قت التسجيل. باإلمكان استخدام المراجع النسبية تى يتسنى لنا تنفيذ الماكر على الخاليا الم ددة فقط هذا األمر يتم عن طريق الضغط على Use Relative Reference )استخدام المراجع النسبية( قبل البدء بتسجيل الماكر. Figure 3-6 فحص الكود البرمجي الموافق للماكرو لرؤية الك د البرمجي الخاص بماكر م سج ل اتبع الخط ات التالية: 1- افتح م رر األك اد VBE عن طريق الضغط على ALT + F11 أ من خالل الذهاب إلى تب يب.Visual Basic ثم Developer 2- اذهب إلى مستكشف المشاريع.Project Explorer إذا لم يكن ظاهرا فأظهره من خالل الذهاب إلى View ثم.Project Explorer 3- من مستكشف المشاريع اختر اسم المصنف الذي ي ت ي على الماكر اضغط على رمز + الم ج د لعمل ت سعة Expand للمصنف. 4- اضغط على + بجانب بند Modules لعمل ت سعة لها. ثم انقر نقرا مزد جا ف ق.Module1 34

49 مسجل الماكر س ف يتم عرض الك د الخاص بالماكر في نافذة الك د Code Window الم ج دة على يمين مستكشف المشاريع. -5 Figure 3-7 من خالل عرض الك د ال ظ ما يلي: الك د تم ادراجه من خالل إجرائية فرعية.Sub- procedure اسم اإلجرائية الفرعية ه نفس اسم الماكر الذي تم إعطاؤه له أثناء تسجيل الماكر. هناك أسطر في الك د عبارة عن مال ظات هذه األسطر ليس لها تأثير على الك د انما يتم ادراجها لت ضيح بعض األم ر التي يرغب المبرمج بإظهارها. هذه المال ظات تبدأ بالرمز )'( تك ن عادة بالل ن األخضر. كمثال على ذلك السطر التالي: ' Macro1 Macro

50 الفصل الثالث 4- يمكنك التعديل في الك د ب يث تتغير نتيجة تنفيذه. فمثال خذ عندك السطر البرمجي التالي: Rows("1:1").Select في هذا السطر تم ت ديد الصف األ ل تمهيدا لتطبيق التنسيق عليه. فإذا أردت أن تغير من عمل الماكر ب يث يق م بتل ين األسطر الثالثة األ لى بالل ن األصفر فتستطيع التغيير في السطر السابق ليصبح كما يلي: Rows("1:3").Select تى هذه النقطة ال تركز كثيرا على كيفية تعديل الك د الناتج عن الماكر الم سجل انما ركز على فهم الفكرة العامة. بعد انتهائك من قراءة فص ل الكتاب التعرف على أجزاء مك نات لغة VBA كيفية التعامل معها س ف يصبح من السهل لديك أن تق م بقراءة فهم الك د المسجل التعديل فيه إن لزم. 36

51 المتغيرات Variables الفصل الرابع المتغيرات 4. في هذا الفصل س ف نق م بشرح مفه م المتغيرات Variables أن اعها كيفية اإلعالن عنها نطاقها كيفية تعيين قيم لتلك المتغيرات. كما تم التطرق فيه للمصف فات Arrays بأن اعها المختلفة كيفية اإلعالن عنها التعامل معها. ما هو المتغير المتغير Variable ه عبارة عن اسم م عطى لمكان في ذاكرة ال اس ب يث يتم تخزين قيمة ذلك المتغير في هذا المكان مما يسمح لك باإلشارة إلى ذلك المكان استخدام البيانات بداخله عند ال اجة. يمكن ان ت ت ي المتغيرات على أن اع مختلفة من البيانات )سنأتي على ذكر ذلك ال قا (. يمكن تعيين/اعطاء قيمة للمتغير باستخدام معامل التعيين )إشارة "="(. فيما يلي بعض األمثلة على بعض العبارات التي استخدمت في إعطاء قيمة لمتغير: X = 100 Rate = y = y+10 name = "Ahmed" 37

52 الفصل الرابع isok = False StartDate = #01/18/2019# Rate = Sheets("sheet1").Range("A1").Value ال ظ أن أسماء المتغيرات تقع على الجانب األيسر من عالمة التعيين )=( بينما تقع القيمة التي تم تعيينها على الجانب األيمن. ت ت ي لغة VBA على العديد من الكلمات الم ج زة التي ال يمكن استخدامها كأسماء للمتغيرات مثل Sub, Function, IF etc اذا ا لت استخدام إ دى هاته الكلمات فس ف ت صل على رسالة خطأ. لمعرفة الكلمات الم ج زة في VBA انظر الرابطين التاليين: أنواع المتغيرات في VBA يدل ن ع المتغير عل كيفية تخزينه في الذاكرة مثل األرقام الص ي ة العشرية النص ص الت اريخ غيرها. بال ضع االفتراضي تستطيع لغة VBA التعامل مع األن اع المختلفة للمتغيرات بشكل تلقائي فليس ضر ريا أن تعلن عن المتغير )اسمه ن عه( قبل البدء باستخدامه فيمكنك مثال أن تكتب الجملة البرمجية التالية: x = 100 هنا يق م االكسيل بشكل تلقائي بالتعرف على المتغير x ت ديد ن عه كعدد ص يح integer ذلك طبقا للقيمة التي تم تعيينها للمتغير هي 100 ل كانت القيمة المعطاة للمتغير هي "Ahmed" فس ف يق م االكسيل بت ديد ن ع البيانات للمتغير x ك.String على الرغم من المر نة التي تمن ها لنا VBA في 38

53 المتغيرات هذا األمر إال أن هناك ثمنا لذلك ه استخداما أقل كفاءة لم ارد الكمبي تر تنفيذا قد يك ن في بعض األ يان أبطأ مما ل تم ت ديد ن ع البيانات المناسب للمتغير قبال. بشكل عام ي صى د ما باستخدام ن ع البيانات الذي يستخدم أقل عدد من البايتات. أنواع البيانات في VBA في الجد ل التالي قائمة بأن اع المتغيرات في لغة VBA نوع البيانات Data Types نطاق القيم Range قيمة عددية ص ي ة من 0 تى 255 True or False, On or Off, 0 or 1-32,768 To ,147,483,648 To 2,147,483, E38 To E E-324 To E E308 To E ,337,203,685, To 922,337,203,685, /-79,228,162,514,264,337,593,543,950,335 بد ن الفاصلة العشرية +/ مع الفاصلة العشرية 1/1/100 to 12/31/9999 Object in VBA تى رف أي قيمة رقمية بنطاق ال Double أ نصية بنطاق String Byte Boolean Integer Long Single Double (Positive) Double (Negative) Currency Decimal Date Object String Variant 39

54 الفصل الرابع اإلعالن عن المتغيرات Declaring variables إذا لم تقم باإلعالن عن ن ع المتغير فسيعطيه VBA الن ع االفتراضي للمتغيرات ه.Variant البيانات التي تخزن ك Variant تستطيع أن تست عب أي ن ع من البيانات يث أن الن ع يتغير طبقا للبيانات الم عينة للمتغير ل ما تريد أن تفعله بهذا المتغير. فمثال إذا كان لدينا متغيرا من ن ع Variant تم تعيين قيمة نصية لذلك المتغير تشابه القيم العددية )كأن تعين قيمة المتغير ب " "( فإمكانك أن تق م بإجراء العمليات النصية text manipulation )مثل أن تق م بإعادة أ ل 3 رم ز من النص( أ العمليات ال سابية على هذا المتغير. هنا يق م VBA بالت يل التلقائي لن ع البيانات سب العملية التي ط بقت على المتغير. انظر المثال التالي: Sub test() var1 = " " MsgBox (Left(var1, 3)) MsgBox (var ) End Sub هنا استخدمنا متغيرا اسمه Var1 أعطيناه القيمة " " اآلن عند تطبيق عملية نصية مثل إيجاد أ ل 3 رم ز في السلسة من خالل الدالة " Left(var1, "(3 Left يتعامل ال VBA مع البيانات كنص.String بينما عند تطبيق عملية سابية على القيمة Var1+300" " يتعامل ال VBA مع البيانات كرقم. شكل 4-1 يظهر لنا نتيجة تنفيذ العمليتين 40

55 المتغيرات Figure 4-1 ترك ال VBA يق م بالتعرف التلقائي على ن ع البيانات قد تبد عملية مري ة إال أن ذلك يأتي على ساب السرعة المسا ة الم ستغلة من الذاكرة يث أن ال VBA تق م ب جز مسا ة بالذاكرة قد تك ن أكبر بكثير من المسا ة المطل بة باإلضافة أنه في الة اجراء أي عملية على متغير من ن ع Variant يق م ال VBA بإجراء سلسلة من عمليات الت قق تى يختار ن ع البيانات المناسب هذا قد يسبب بطئا في تنفيذ البرنامج. هناك مشكلة أخرى قد ت اجهك إذا لم تقم باإلعالن عن المتغيرات هي أن الك د الخاص بك يصبح أكثر عرضة لألخطاء خذ عندك المثال التالي: لنفترض أنك قمت باستخدام متغيرا غير معلن عنه باسم CurrentValue فأعطيته القيمة 250 من خالل السطر البرمجي التالي: CurrentValue = 250 ثم أردت أن يق م البرنامج بإضافة 100 على قيمة CurrentValue فأدخل السطر البرمجي: CurentValue = هل ال ظت الخطأ في السطر البرمجي الثاني هناك رف "r" ناقص في كلمة CurrentValue عليه فالنسبة لل VBA المتغير CurentValue ه متغير جديد يختلف تماما عن المتغير CurrentValue بذلك فإن النتيجة النهائية لتنفيذ البرنامج ستك ن خاطئة تماما. إنه من الصع بة بمكان 41

56 الفصل الرابع أن تكتشف هذا الن ع من األخطاء بالذات عندما يك ن البرنامج كبيرا ي ت ي على عدة عشرات أ مئات من األسطر البرمجية. بناء على ما ذكر سابقا فإن اإلعالن عن المتغيرات هي من األم ر الم صى بها بشدة. أ د الميزات التي ت فرها لك عملية اإلعالن عن المتغيرات هي عملية االكمال التلقائي ألسماء المتغيرات قت االدخال فإذا كنت تريد أن تدخل اسم أ د المتغيرات المعلن عنها فيكفي أن تكتب أ ل رف أ رفين من المتغير ثم تضغط على االختصار Ctrl+Space ليق م ال VBA بإكمال االدخال أ عرض مجم عة م ددة من الخيارات ليتم االختيار من بينها. Figure 4-2 لإلعالن عن المتغيرات نستخدم )غالبا ( الكلمة المفتا ية Dim بالشكل التالي: <ن ع المتغير> As <اسم المتغير> Dim أمثلة: Dim Name As String Dim Salary As Double Dim StartDate As Date Dim X 42

57 المتغيرات ال ظ هنا أنه في جملة اإلعالن األخيرة لم يتم إعطاء المتغير X ن ع بيانات م دد لذلك فس ف يتعامل معه VBA كمتغير من ن ع.Variant من الممكن اإلعالن عن أكثر من متغير في نفس السطر كما في المثال التالي: Dim Name As String, Salary As Long, StartDate As Date إذا كان لدينا أكثر من متغير من نفس الن ع نستخدم نفس الطريقة كما في المثال التالي: Dim FirstName As String, LasteName As String مع مال ظة أن الصيغة التالية ال يمكن استخدامها لت ديد ن ع البيانات ألكثر من متغير من نفس الن ع: Dim FirstName, LastName As String إذا استخدمت الجملة السابقة فإن المتغير األخير فقط ه الذي سيتم تعريفه ك String بينما سيتم تعريف باقي المتغيرات ك.Variant بجانب الكلمة المفتا ية Dim هناك ثالثة كلمات أخرى يمكن استخدامها لتعريف المتغيرات هي: Static Public Private سيتم التطرق لتلك األن اع ال قا في الفقرات التالية. نطاق المتغيرات نطاق المتغير Variable's scope ي دد ال دات البرمجية االجرائيات التي يمكن أن تستخدم المتغير. هناك ثالثة أن اع لنطاق المتغير: Function نطاق اإلجرائية فقط )س اء أكانت اإلجرائية عبارة عن دالة Procedure only 1- أ إجرائية فرعية.)Sub Procedure في هذه ال الة يتم تعريف النطاق للمتغير عن طريق استخدام جملة Dim أ Static بداخل اإلجرائية 2- only Module نطاق ال دة البرمجية فقط. 3- modules All procedures in all كل االجرائيات في جميع ال دات البرمجية. 43

58 الفصل الرابع في الفقرات التالية سنتعرض بالتفصيل لهذه األن اع الثالثة. Procedure only variables المتغيرات في نطاق اإلجرائية فقط يعد هذا النطاق ه المست ى األدنى لمتغير ما يث ان المتغير يك ن معرفا بداخل اإلجرائية يمكن استخدامه بداخل تلك اإلجرائية فقط. عندما ينتهي تنفيذ االجرائية فإن المتغير ال يع د له ج د يق م االكسيل بإخالء مكانه في الذاكرة. عند تنفيذ اإلجرائية مرة أخرى يع د المتغير مرة أخرى لكنه يفقد أي قيمة سابقة اكتسبها من خالل التنفيذ السابق لإلجرائية. أشهر طريقة لإلعالن عن المتغير في نطاق اإلجرائية فقط ه من خالل استخدام الكلمة المفتا ية Dim ذلك باإلعالن عنه بعد جملة Sub أ Function مباشرة قبل كتابة أسطر الك د الخاصة باإلجرائية. انظر المثال التالي: Sub Test( ) Dim FirstName As Text, LastName As Text [أسطر الك د البرمجي [ End Sub إذا أعلنت عن متغير في نطاق اإلجرائية فقط فإن االجرائيات األخرى بداخل نفس ال دة البرمجية تستطيع استخدام نفس اسم المتغير بداخلها لكن يتم التعامل مع كل متغير بشكل منفصل تماما ال ت جد عالقة أبدا بين تلك المتغيرات. يمكن الق ل بأن المتغيرات ذات نطاق "اإلجرائية فقط" هي األكثر فعالية في استخدام الذاكرة يث أن المتغير ي خلى مكانه في الذاكرة ف را بعد تنفيذ اإلجرائية. 44

59 المتغيرات Module only variables المتغيرات في نطاق الوحدة البرمجية فقط. إذا كنت تريد أن يك ن المتغير متا ا لجميع االجرائيات بداخل ال دة النمطية فبإمكانك اإلعالن عن المتغير قبل أ ل إجرائية )س اء أكانت Functionأ (. Sub هذا المكان الذي يسبق أي إجرائية يطلق عليه Declarations section "قسم اإلعالن عن المتغيرات" الشكل 4-3 ي ضح لنا جزء اإلعالن عن المتغيرات.declaration ال ظ هنا أنك بمجرد ضع مؤشر الما س في جزء اإلعالن تتغير القائمة المنسدلة على اليمين إلى.Declaration باإلمكان استخدام القائمة المنسدلة لالنتقال إلى أي جزء من ال دة النمطية. Figure 4-3 بالنسبة للمتغيرات في نطاق ال دة النمطية يمكن استخدام هذه المتغيرات في أي إجرائية بداخل ال دة النمطية تبقى قيمتها كما هي عند االنتقال من إجرائية ألخرى. 45

60 الفصل الرابع المتغيرات العامة Public variables إذا كنت تريد أن يك ن المتغير متا ا لجميع االجرائيات في جميع ال دات النمطية يمكنك أن تعرف المتغير كمتغير عام Public variable باستخدام الكلمة المفتا ية Public ذلك في جزء االعالن عن المتغيرات. انظر المثال التالي: Public InvestRate as Long اآلن يمكنك استخدام المتغير InvestRate في أي دالة أ إجرائية فرعي بداخل أي دة نمطية بداخل المصنف. المتغيرات الثابتة Static Variables عادة يتم عمل إعادة تعيين Reset لجميع المتغيرات في اإلجرائية بعد االنتهاء من تنفيذها. المتغيرات الثابتة هي ن ع خاص من المتغيرات التي ت تفظ بقيمتها تى بعد االنتهاء من تنفيذ اإلجرائية ال يتم عمل إعادة تعيين لها. يتم اإلعالن عن المتغيرات الثابتة باستخدام الكلمة المفتا ية Static بداخل اإلجرائية. في المثال التالي استخدمنا متغيرا ثابتا لعرض عدد المرات التي تم بها تشغيل اإلجرائية الفرعية Test() Figure

61 المتغيرات هنا تم تعريف المتغير RunCounter كمتغير ثابت من ن ع Integer في كل مرة يتم تشغيل اإلجرائية الفرعية Test() يتم زيادة قيمة RunCounter بمقدار 1 من خالل السطر البرمجي: RunCounter = RunCounter + 1 MsgBox RunCounter يتم عرض النتيجة في مربع ار من خالل السطر البرمجي: متى يحدث إعادة تعيين Reset للمتغيرات نطاق المتغيرات Variables scope ال ي دد أين يمكن استخدام المتغير فقط بل أيضا ي دد متى تق م VBA ب ذف قيمة المتغير من الذاكرة. يث أنه كما تم ذكره سابقا - تق م ال VBA ب ذف قيمة المتغير الم ج د ضمن نطاق اإلجرائية Procedure only variable بمجرد االنتهاء من تنفيذ اإلجرائية. المتغيرات األخرى variables( )Static, Public, and Module only ت تفظ بقيمتها ل ين اغالق المصنف أ االكسيل. يمكنك أيضا أن تق م ب ذف قيم المتغيرات من الذاكرة باستخدام ا دى الطرق التالية: عن طريق الضغط على زر Reset )المربع األزرق الم ج د على شريط األد ات( عن طريق الضغط على زر End عند ظه ر رسالة خطأ. عن طريق استخدام الكلمة المفتا ية "End" في أي مكان بداخل الك د 47

62 الفصل الرابع Figure 4-5 الثوابت Constants أ يانا ت تاج إلى اإلشارة إلى قيمة ثابتة ال تتغير أبدا مثل أن تشير إلى ثابت الدائرة "ط "Pi الذي يسا ي القيمة 3.14 تقريبا. لهذا الغرض نستخدم الث ابت Constants يث أن المتغيرات العادية Variable معرضة ألن تتغير قيمتها مع تشغيل البرنامج )لهذا تدعى متغيرات. أليس كذلك ( يتم اإلعالن عن الث ابت باستخدام الكلمة المفتا ية قيمة المتغير. الجمل التالية هي أمثلة على الث ابت:.Const ت ت ي جملة اإلعالن عن المتغير على Const Pi =

63 المتغيرات Const ModuleName As String = "Reporting" Public Const Rate = استخدام الث ابت بدال من ادراج القيم مباشرة كقيم ثابتة Hard-coded في البرنامج ه من الممارسات الممتازة في البرمجة يث أن هذا األمر يسهل قراءة فهم الك د لغير كاتبه باإلضافة إلى أن هذا األمر يسهل من عملية تغيير قيم الث ابت فتتم عملية التغيير مرة ا دة فقط. فعلى سبيل المثال اذا كان الك د يتكرر به اإلشارة إلى ثابت م دد )مثل نسبة الفائدة Interest مثال ( فمن األفضل أن يتم اإلعالن عن ثابت تعيين قيمة تلك القيمة إليه ب يث أنه إذا تغيرت نسبة الفائدة فسن تاج لتغيير تلك النسبة مرة ا دة عن طريق تغيير قيمة الثابت. نطاق الثوابت Constants Scope بالنسبة لنطاق الث ابت فما ينطبق على المتغيرات بهذا الصدد ينطبق على الث ابت. مال ظة/ بخالف المتغيرات قيمة الثابت ال يمكن تغييرها بعد اإلعالن عنها. اذا ا لت تغييرها في أثناء الك د فست صل على رسالة خطأ. التعامل مع المتغيرات النصية Working with Strings تتعامل VBA مع ن عين من السالسل النصية: السالسل النصية ذات الطول الثابت :Fixed-length strings هي التي يتم اإلعالن عنها مع ت ديد ال د األقصى لعدد ال ر ف في السلسلة النصية. ال د األقصى لعدد ال ر ف لهذا الن ع ه رف. السالسل النصية ذات الطول المتغير :Variable-length strings إذا لم يتم ت ديد عدد األ رف للمتسلسلة النصية قت اإلعالن عن المتغير يتم التعامل مع المتسلسلة النصية كذات ط ل متغير.Variable-length string في هذه ال الة فال د األعلى لعدد ال ر ف في المتسلسلة ه عبارة عن 2 مليار رف

64 الفصل الرابع عند اإلعالن عن متغير من ن ع String باإلمكان ت ديد عدد األ رف في المتسلسلة في نفس جملة اإلعالن إذا لم يتم ت ديد عدد األ رف فس ف يتعامل ال VBA مع المتغير ك Variable-length.string المثالين التاليين ي ض ان كيفية اإلعالن عن متغير نصي مع أ بد ن ت ديد عدد األ رف: التعامل مع متغيرات التاريخ Date variables Dim MyName As String * 40 Dim MyName As String التاريخ Date من أن اع البيانات المفيدة التي يكثر استخدامها. إذا استخدمت متغيرا نصيا مثال ال ت اء قيمة تاريخ فال يمكنك اجاء العمليات على التاريخ. بينما إذا استخدمت الن ع Date فيمكنك أن تجري العمليات المختلفة على التاريخ مثل أن تعرف التاريخ بعد أ قبل عدد معين من األيام أ معرفة عدد األيام بعد تاريخين. األمثلة التالية تعرض كيفية اإلعالن عن متغيرات ث ابت من ن ع :Date Dim FirstDate As Date Const StartDate As Date = #1/1/2020# Const Noon As Date = #12:00:00 PM# في ال VBA يجب أن ت ضع قيم ال قت التاريخ بين عالمتي # كما في األمثلة السابقة. هنا يجب أن تعلم شيئا مهما ال VBA تق م بعرض ال قت التاريخ كما ه معرف في الخيارات اإلقليمية لجهاز ال اس ب. لكن عند ادخال قيم ال قت التاريخ يجب أن تلتزم بالنظام األمريكي ه "الشهر/الي م/السنة "dd/mm/yyyy فمثال إذا أدخلت السطر البرمجي التالي: Dim MyDate = #11/10/2020# فهذا يعني العاشر من ن فمبر عند عرض التاريخ فسيق م االكسيل بعرضه كما ه معرف في الخيارات اإلقليمية )في ال عرضه في مربع ار( أ كما تم تنسيق الخاليا )في ال عرض التاريخ بداخل خلية(. 50

65 المتغيرات جمل التعيين Assignment Statements جمل التعيين هي التي يتم من خاللها إعطاء القيم للمتغيرات أ الكائنات )مثل الخاليا( هي تستخدم عادة المعامل "=". في األسفل بعض األمثلة على جمل التعيين: x = 100 Z = Z + 1 y = (y + x) / 20 Rate = Range("A1").Value كما ال ظت من خالل األمثلة السابقة يمكن استخدام جمل التعيين لتعيين قيمة م ددة للمتغير أ تعيين نتيجة عملية ما للمتغير كما يمكن إعطاء المتغير قيمة أ د الكائنات كأن تعطي المتغير القيمة الم ج دة في الخلية A1. من الجمل السابقة هناك جملة قد تبد غريبة إال أنها من التعابير التي يكثر استخدامها في عالم البرمجة هي: مفه م هذه الجملة ه أنه في كل مرة يتم تنفيذ هذه الجملة يتم زيادة قيمة المتغير بمقدار 1. المصفوفات Arrays Z = Z + 1 تدعم جميع لغات البرمجة ال ديثة المصف فات من بينها لغة VBA منذ إصدارها األ ل. المصف فة هي مجم عة من المتغيرات التي تتشارك في نفس االسم. تتم اإلشارة إلى عنصر م دد بداخل المصف فة من خالل استخدام اسم المصف فة مع رقم المرجع Index number للمتغير بداخل ق سين. على سبيل المثال بإمكانك اإلعالن عن مصف فة من المتغيرات الرقمية من ن ع Integer ت ت ي على 10 عناصر ت ت اسم MyNumbers من ثم يمكنك اإلشارة للعنصر األ ل في المصف فة كالتالي: MyNumers(1) العنصر الثاني: MyNumers(2) هكذا. 51

66 الفصل الرابع اإلعالن عن المصفوفات Declaring Arrays قبل أن تشرع باستخدام مصف فة ما يجب أن تق م باإلعالن عنها ال ي جد هنا أي استثناءات بخالف المتغيرات العادية التي يمكن استخدامها بداخل ك د ال VBA بد ن اإلعالن عنها. يمكنك اإلعالن عن المصف فات باستخدام الكلمة المفتا ية Dim أ Public سب النطاق الذي تريده لهذه المصف فة. يجب ت ديد عدد عناصر المصف فة عند اإلعالن عنها من خالل ادخال الرقم المرجعي األ ل First index number ثم الكلمة المفتا ية To ثم الرقم المرجعي األخير.Last Index number المثال التالي ي ضح لنا كيفية اإلعالن عن مصف فة من األرقام Integer ت ت ي على 10 عناصر: Dim MyNumbers (1 To 10) As Integer عند اإلعالن عن مصف فة فلك الخيار في أن ت دد الرقم المرجعي Index األدنى األقصى أ أن ت دد الرقم المرجعي األقصى فقط. في ال لم ت دد الرقم المرجعي األدنى فإن ال VBA يعتبره 0 ليس 1. الجملتين التاليتين لهما نفس التأثير: Dim MyNumbers (0 To 10) As Integer Dim MyNumbers (10) As Integer 0 إذا كنت تريد لل VBA أن يفترض أن الرقم المرجعي األدنى ه 1 التالية في جزء اإلعالن : Decelerations section ليس فبإمكانك ادخال الجملة Option Base 1 المصفوفات متعددة األبعاد Multidimensional Arrays Onedimensional المصف فات التي تم التعرض لها في الفقرات السابقة هي عبارة عن مصف فات يدة البعد يمكن تخيل المصف فة ذات البعد ال ا د كعم د ا صف من القيم. من الممكن أن تتعامل ال VBA مع مصف فات ذات أبعاد تى 60 بعد على الرغم من أنه من النادر جدا أن يضطر أ د أن يتعامل مع مصف فة ذات أبعاد أكثر من اثنين أ ثالثة. المثال التالي يعرض لنا مصف فة ذات بعدين تسعة عناصر: Dim MyArray( 1 To 3, 1 To 3) As Integer 52

67 المتغيرات لإلشارة لعنصر م دد بداخل هذه المصف فة يجب أن ت دد الرقم المرجعي Index number لكل بعد كما في التالي: MyArray (1, 1 ) = هنا عينا القيمة 100 للعنصر ال اقع في الم قع 1 في ال اقع يمكن تخيل المصف فة ثنائية البعد كمربع أ مستطيل ذات صف ف أعمدة أما المصف فة الثالثية فيمكن تخيلها كمت ازي مستطيالت له ط ل عرض ارتفاع. المصفوفات الديناميكية Dynamic Arrays بإمكانك ايضا انشاء مصف فات ديناميكية )ذات عدد عناصر متغير(. لإلعالن عن هذا الن ع من المصف فات نستخدم أق اسا فارغة بعد اسم المصف فة كما في المثال التالي: Dim MyArray () As Integer قبل أن تبدأ باستخدام هذه المصف فة يجب أن تستخدم الكلمة المفتا ية ReDim إلخبار ال VBA عن عدد العناصر بداخل المصف فة. عادة يتم ت ديد عدد العناصر في المجم عة في أثناء تشغيل البرنامج يث أنه باإلمكان استخدام جملة ReDim بالعدد الذي تريده. المثال التالي يعرض لنا كيفية استخدام ReDim لتغيير عدد العناصر في المصف فة: ReDim MyArray ( 1 To ElementsNo) على افتراض أن المتغير ElementsNo ي ت ي على عدد العناصر المطل ب. 53

68 الفصل الرابع 54

69 التعامل مع كائنات النطاق الفصل الخامس.5 التعامل مع كائنات النطاق كائن النطاق يمثل نطاقا بداخل كائن رقة العمل.Worksheet object هذا الكائن )النطاق( له مجم عة من الخصائص Properties التي يمكن عرضها في بعض األ يان تغييرها مجم عة من الد ال Methods التي يمكن تطبيقها عليه. كائن النطاق من الممكن أن ي ت ي على خلية ا دة من الممكن أن ي ت ي على جميع خاليا رقة العمل. عند اإلشارة إلى كائن نطاق يجب أن يتم إ اطة العن ان بعالمتي االقتباس Double quotes فإذا أردت أن تشير إلى النطاق A1:B10 فمن الممكن أن تستخدم الجملة التالية: Range ("A1:B10") إذا كان النطاق ي ت ي على خلية ا دة فلإلشارة للخلية A1 نستخدم الجملة التالية: فقط فيجب أيضا أن ت ضع بداخل عالمتي اقتباس أيضا Range ("A1") إذا كان للنطاق اسم Named range فيمكن استخدام اسم النطاق بين عالمتي اقتباس أيضا مثل: Range ("MyRange") يمكن اإلشارة إلى نطاق خارج رقة العمل النشطة Active worksheet عن طريق تضمين اسم رقة العمل في الجملة التي تصف النطاق كما في المثال التالي: Worksheet ( "Sheet1"). Range ("A1:B10") 55

70 الفصل الخامس كما يمكنك أن تشير إلى نطاق بداخل مصنف آخر من خالل تضمين اسم المصنف كما في المثال التالي: Workbook("Book1.xlsx").Worksheet("Sheet1").Range ("A1:B10") يمكن لكائن النطاق أن يتك ن من صف أ عم د كامل )أ مجم عة من الصف ف أ األعمدة( فمثال يمكنك من خالل الجملة التالية اإلشارة إلى الصف األ ل في رقة العمل النشطة: Range("1:1") كما يمكنك من خالل الجملة التالية اإلشارة إلى األعمدة الثالثة األ لى في رقة العمل النشطة: Range("A:C") لإلشارة إلى نطاقات متباعدة استخدم الفاصلة بين النطاقات كما في المثال التالي: Rang ("A1:B10, D1:E10") اإلشارة لكائنات النطاق من خالل الخاصية Cells من الممكن اإلشارة إلى النطاقات باستخدام الخاصية Cells يث أن هذه الخاصية تأخذ معاملين هما رقم الصف رقم العم د. فمثال إذا أردنا اإلشارة إلى الخلية B1 هي ال اقعة في الصف األ ل العم د الثاني نستخدم الجملة التالية: Cells(2, 1) يث أن المعامل األ ل يمثل رقم الصف المعامل الثاني يمثل رقم العم د. إلعطاء قيمة م ددة للخلية )100 A1 مثال ( يمكن استخدام أي من الجملتين التاليتين: Range ("A1").Value = 100 Cells(1,1).Value = 100 أما إذا أردنا إعطاء القيمة 100 للخاليا في النطاق A1:B10 فيمكن استخدام أي من الجملتين التاليتين: 56

71 التعامل مع كائنات النطاق تظهر ق ة الخاصية كبيرة. خاصية اإلزاحة Range ( "A1:B10").Value = 100 Range(Cells (1,1), Cells( 2,10)). Value = 100 Cells Offset عند استخدام المتغيرات كع امل لها بدال من األرقام مما يعطيها مر نة من خالل هذه الخاصية بإمكانك أن تشير إلى نطاق يبعد عن النطاق ال الي بمقدار عدد م دد من الصف ف أ األعمدة. تأخذ هذه الخاصية معاملين المعامل األ ل ه عبارة عن عدد الصف ف الثاني عدد األعمدة )بالنسبة لعدد الصف ف الرقم الم جب ه للسير من اليسار لليمين أما السالب فللسير من اليمين لليسار أما بالنسبة لعدد األعمدة فالرقم الم جب للسير من األعلى لألسفل السالب من األسفل لألعلى(. فمثال لإلشارة إلى الخلية التي تبعد بمقدار صفين ثالثة أعمدة عن الخلية ( A1 هي الخلية ) D3 نستخدم الجملة التالية: خاصية القيمة Value Range ("A1").Offset (2, 3) تمثل الخاصية Value القيمة بداخل خلية ما. هي من الخصائص التي يمكن قراءتها تغييرها Read-.write لذلك فمن الممكن لك د VBA أن يقرا القيمة فقط بد ن تغييرها كما في السطر البرمجي التالي الذي يق م بعرض قيمة الخلية A1 في مربع ار :Message Box MsgBox Range("A1").Value من الجدير بالذكر أنه يمكن قراءة قيمة خلية ا دة فقط لذلك فالجملة التالية ال تعمل تعرض خطا عند تنفيذ البرنامج: MsgBox Range("A1:B10").Value مالحظة إذا كنت تريد أن تق م بقراءة م ت يات مجم عة من الخاليا فيمكنك أن تعرف متغير ك Variant من ثم تضع القيم بداخل هذا المتغير. ذلك ألن المتغير من ن ع Variant من الممكن أن يعمل كمصف فة 57

72 الفصل الخامس.Array من ثم يمكنك كما في أي مصف فة أن تق م بعرض قيمة الخلية المطل بة من خالل ت ديد م قعها في المصف فة. في المثال التالي قمنا بتعريف متغير ك Variant أعطيناه قيم النطاق A1:B10 من ثم قمنا بعرض قيمة الخلية B2: Dim x As Variant X = Range("A1:B10"). Value Msgbox x(2,2) من الممكن أن نق م بتغيير قيمة خلية ما من خالل هذه خاصية Value كما في المثال التالي: Range ("A1"). Value = 150 بعكس عملية قراء القيم من مجم عة من الخاليا التي ال تج ز فإنه باإلمكان استخدام الخاصية Value إلعطاء قيمة م ددة لمجم عة من الخاليا دفعة ا دة كما في المثال التالي: Range("A1: B10").Value = 150 مالحظة//// خاصية القيمة Value هي الخاصية االفتراضية لكائن النطاق Range object لذلك يمكن استخدام أي من الجملتين التاليتين إلعطاء قيمة للخلية A1: Range ("A1"). Value = 150 Range ("A1") = 150 خاصية Text خاصية Text ترجع القيمة التي تعرضها الخلية كنص. فمثال إذا تم تطبيق التنسيق الرقمي عملة على الخلية B2 كما في الشكل 5-1 فإن الجملة: 58

73 التعامل مع كائنات النطاق MsgBox Range("B2").Value ترجع قيمة الخلية الرقمية هي 160. بينما ترجع الجملة التالية القيمة كما تظهر في الخلية: MsgBox Range("B2").Text Figure 5-1 Figure

74 الفصل الخامس إذا كانت الخلية ت ت ي على معادلة فإن خاصية Text تعيد نتيجة تنفيذ المعادلة أما اذا كانت ت ت ي على نص فإن خاصية Text خاصية Value ترجعان نفس النتيجة يث أن النص بخالف األرقام ال يمكن تنسيقه ليظهر بشكل مختلف. خاصية العد Count الخاصية Count ترجع عدد الخاليا في نطاق م دد بغض النظر عما إذا كانت الخاليا ت ت ي على بيانات أم ال. هذه الخاصية هي للقراءة فقط Read-only ال يمكن تعديل قيمتها. السطر البرمجي التالي يعرض عدد الخاليا في النطاق A1:B10 ار: في مربع MsgBox Range("A1:B10").Count خاصية HasFormula هذه الخاصية هي للقراءة فقط هي ترجع القيمة True إذا كانت الخلية ت ت ي على معادلة False بخالف ذلك. إذا كان النطاق ي ت ي على أكثر من خلية فإن هذه الخاصية ترجع True في ال أن جميع خاليا النطاق ت ت ي على معادالت False إذا لم يكن هناك أي خلية ت ت ي على معادلة أما اذا كانت بعض خاليا النطاق ت ت ي على معادالت البعض اآلخر ال ي ت ي فإن هذه الخاصية ترجع القيمة.Null السطر البرمجي التالي يعرض القيمة True إذا كانت الخلية A1 ت ت ي على معادلة ذلك: False فيما عدا MsgBox Range("A1").HasFormual يجب أن تك ن شديد ال ذر عند التعامل مع القيمة Null الن ع من القيم ه.Variant يث أن المتغير ال يد الذي يستطيع التعامل مع هذا 60

75 التعامل مع كائنات النطاق خاصية Font من خالل هذه الخاصية يمكن الت كم بالخط بداخل نطاق من الخاليا مثل اختيار ن ع جم الخط جعل الخط غامق Bold أ مائل Italic تغيير ل ن الخط غيرها من خصائص الخط. المثال التالي ي ضح لنا كيفية استخدام هذه الخاصية لجعل الخط في خاليا النطاق A1:B10 مائال :Italic Range("A1:B10").Font.Italic = True بالمثل ل أردنا جعل الخط غامقا نستخدم السطر التالي: Range("A1:B10").Font.Bold = True تساعدك بيئة البرمجة VBE في اختيار خاصية الخط المطل بة من خالل ميزة االكمال التلقائي ففي المثالين السابقين بمجرد أن تكتب " Range("A1:B10").Font. " يق م VBE بعرض الخيارات المتا ة مما يساعدك يسهل عليك كتابة الك د. الخاصية Interior يمكن استخدام هذه الخاصية للت كم بل ن الخلفية نمطها Color and pattern لخاليا النطاق الم دد. لتل ين الخاليا في النطاق A1:B10 بالل ن األ مر نستخدم الك د التالي: 61

76 الفصل الخامس Range("A1:B10").Interior.Color = vbred يمكن استخدام أل ان أخرى مثل vbgreen, vbblack الشكل 5-3 غيرها يمكن استخدام رقم الل ن كما في 5-3 Figure لل ص ل على أل ان أكثر يمكن استخدام الدالة RGB التي يمكن ن خاللها المزج بين األل ان األساسية )األ مر األخضر األزرق لل ص ل على 16 ملي ن ل ن(. المثال التالي ي ضح لنا كيفية استخدام الدالة RGB العطاء الل ن الرمادي لنطاق من الخاليا: Range("A1:B10").Interior.Color = RGB(128, 128, 128) انظر الشكل 5-4 لمعرفة كيفية تمثيل بعض األل ان الشائعة باستخدام الدالة.RGB 62

77 التعامل مع كائنات النطاق Figure

78 الفصل الخامس بعض الوظائف Methods التي يمكن تطبيقها على كائنات النطاق ال ظائف هي مجم عة من اإلجراءات التي يمكن تطبيقها على الكائن. هناك العشرات من ال ظائف التي يمكن تطبيقها على كائنات النطاق في هذا الجزء س ف نستعرض بعضا من أهمها. وظيفة التحديد Select تستخدم هذه ال ظيفة لت ديد نطاق من الخاليا. الك د التالي ي دد النطاق A1:B10 في رقة العمل النشطة: Range("A1:B10").Select قبل استخدام Select لت ديد نطاق ما من الجيد أن تستخدم سطرا برمجيا آخر للتأكد أن رقة العمل المطل ب ت ديد النطاق بها هي ال رقة النشطة.Active sheet يتم ذلك من خالل ال ظيفة.Activate مثال إذا كان النطاق المطل ب ت ديده ضمن رقة العمل Sheet1 نستخدم الك د التالي: Sheets( "Sheet1" ). Activate Range("A1:B10").Select ال ظ أن الجملة التالية ال تعتبر ص ي ة ترجع قيمة خطأ عند تنفيذ البرنامج إذا لم تكن Sheet1 هي ال رقة النشطة. Sheets("Sheet1").Range("a1").Select وظائف النسخ واللصق Copy and Paste methods 64

79 التعامل مع كائنات النطاق بإمكانك اجراء عمليات النسخ اللصق من خالل ظيفتي.Copy and Paste مع مال ظة أن كل ظيفة من هاتين ال ظيفتين ت طبق على كائن مختلف ف ظيفة Copy تطبق على كائن النطاق بينما تطبق ظيفة اللصق على كائن رقة العمل.Worksheet اإلجرائية الفرعية التالية تق م بنسخ م ت يات النطاق A1:B10 إلى النطاق الذي يبدأ بالخلية D1: Sub CopyPaste() Range("A1:B10").Select Selection.Copy Range("D1").Select ActiveSheet.Paste End Sub ال ظ أننا في هذا المثال استخدمنا الكائن ActiveSheet العمل النشطة. يمكن اختصار الك د السابق بالك د التالي: ه ن ع خاص من الكائنات يشير إلى رقة Sub CopyPaste() Range("A1:B10").Copy Range("D1") End Sub يستفيد هذا الك د من قيقة أن ال ظيفة Copy تستطيع أن تأخذ معامال ي دد جهة النسخ Destination في التنا ال جهة هي.Range("D1") وظيفة المسح Clear Method تم هذه ال ظيفة م ت يات الخاليا باإلضافة إلى أي تنسيقات مطبقة على الخاليا. الك د التالي يستخدم هذه ال ظيفة لم م ت يات الخاليا في النطاق :(A1:B10( Range ("A1:B10").Clear 65

80 الفصل الخامس باإلضافة إلى هذه ال ظيفة هناك ال ظيفة ClearContents التي تم م ت يات الخاليا بد ن أن تم التنسيق ال ظيفة ClearFormats التي تم التنسيق بد ن أن تم الم ت يات. وظيفة الحذف Delete method تختلف ظيفة ال ذف Delete عن ظيفة المسح Clear فعندما ت ذف نطاقا من الخاليا يتم إزا ة الخاليا الم يطة لسد مكان الخاليا الم زا ة. لذلك يجب أن يتم ت ديد اتجاه االزا ة كمعامل ل ظيفة.Delete أما إذا أردت ذف صف أ عم د فال يلزم ت ديد اتجاه االزا ة يتم ذف الصف أ العم د مباشرة. كي تتخيل عمل هذه ال ظيفة دد نطاق بداخل رقة العمل ثم انقر بزر الما س األيمن اختر Delete ذف س ف يظهر مربع ار ينها يطلب منك ت ديد اتجاه االزا ة إذا كنت تريد ذف النطاق أ ت ديد إذا ما كنت تريد ذف صف ف أ أعمدة النطاق بأكملها. الك د التالي ي ذف العم د D: Columns("D:D").Delete أما الك د التالي في ذف خاليا النطاق :)A1:B10( Range("A1:B10").Delete xltoleft ال ظ هنا اننا استخدمنا الكلمة المفتا ية xltoleft إلزا ة الخاليا التي على يسار الخاليا الم ذ فة يمكن استخدام الكلمة xlup الزا ة الخاليا التي بأعلى الخاليا الم ذ فة. 66

81 جمل الت كم الفصل السادس جمل التحكم 6. تعد جمل الت كم من أهم الجمل البرمجية يث أنك تستطيع من خالل جمل الت كم Control statements الت كم بسير البرنامج بناء على ت قق شرط أ مجم عة من الشر ط. في هذا الفصل س ف نتعرف على العديد من جمل الت كم التي ت فرها لنا لغة VBA كيفية استخدامها. جملة IF Then تعد هذه الجملة هي أشهر أهم جمل الت كم في لغات البرمجة قاطبة. من خالل هذه الجملة يمكن تنفيذ أ امر م ددة بناء على ت قق شرط أ شر ط م ددة. إذا تم استخدام الكلمة Else مع جملة IF فهذا يسمح لنا بتنفيذ أمر أ مجم عة من األ امر في ال عدم ت قق الشرط. في ا دى االتها تأخذ جملة IF- Then الشكل التالي )ال ظ هنا أنه في هذه ال الة يجب أن تك ن كلمتي Then IF على نفس السطر(: [األمر في حال تحقق الشرط] Then [الشرط] IF في ال ج د كلمة Else يصبح شكل الدالة كالتالي ( هنا ال ظ أيضا أن IF, Then, and Else يجب أن يك ن ا على نفس السطر(: [األمر في حال عدم تحقق الشرط] Else [األمر في حال تحقق الشرط] Then [الشرط] IF مثال على IF- Then في هذا المثال تق م جملة IF بالت قق من القيمة في الخلية A1 إذا كانت القيمة أكبر من 60 تعي ن القيمة للخلية B1. result من ثم يتم تعيين قيمة المتغير.result للمتغير Pass 67

82 الفصل السادس Sub PassFail() Dim score As Integer, result As String score = Range("A1").Value If score >= 60 Then result = "Pass" Range("B1").Value = result End Sub جملة IF Then Else في المثال السابق إذا كانت القيمة في الخلية A1 أقل من 60 فإن الخلية B1 ال تظهر أي قيمة. إذا أردنا أن تظهر القيمة Fail في ال كانت قيمة الخلية A1 أقل من 60 فمن الممكن استخدام كلمة Else مع جملة IF كما في الك د التالي الذي تم تعديله على المثال السابق. Sub PassFail() Dim score As Integer, result As String score = Range("A1").Value If score >= 60 Then result = "Pass" Else result = "Fail" Range("B1").Value = result End Sub جملة IF- Then [Else]- Endif في ال كان لديك أكثر من أمر لتنفيذه س اء عند ت قق الشرط أ عند عدم ت ققه فمن الممكن استخدام الشكل التالي من جملة :IF 68

83 جمل الت كم مثال If [الشرط] Then [األمر البرمجي في ال ت قق الشرط] End If في ال If - Else يصبح الشكل كالتالي: If [الشرط] Then [األمر البرمجي في ال ت قق الشرط [ Else [األمر البرمجي في ال عدم ت قق الشرط] End If في هذا المثال المطل ب ه أنه إذا كانت القيمة في الخلية A1 أقل من 60 أن يتم كتابة Fail في الخلية."Hard luck!!" باإلضافة إلى عرض مربع ار يعرض الجملة B1 لهذا الهدف نستخدم الك د التالي: Sub PassFail() Dim score As Integer, result As String score = Range("A1").Value If score >= 60 Then Else result = "Pass" result = "Fail" MsgBox "Hard luck!!" End If 69

84 الفصل السادس Range("B1").Value = result End Sub في هذا الشكل من أمر If يمكنك إضافة أي عدد من األسطر البرمجية )التي تمثل الشر ط( ت ت جزء If أي عدد من األسطر البرمجية ت ت جزء.Else هذه الطريقة في كتابة جملة IF تعد في نظر الكثيرين أفضل من الطريقة التي تم ذكرها أ ال التي يتم فيها كتابة جملة If على سطر ا د يث أنها باإلضافة إلى أنك تستطيع أن تضيف أي عدد من الشر ط أي عدد من الجمل البرمجية في ال ت قق الشرط/ أ الشر ط المطل بة أسهل في القراءة التتبع باإلضافة إلى أنك في هذه ال الة ستكتب جمل برمجة أقصر بالتالي س ف تك ن أقل عرضة لألخطاء. استخدام If Then -Elseif Endif في ال كان لديك مجم عة من ال االت / الشر ط لالختيار فيما بينها يمكنك استخدام Elseif مع جملة.If تأخذ جملة If مع Elseif الشكل العام التالي: If [ األ ل [الشرط Then [الك د البرمجي في ال ت قق الشرط األ ل] ElseIf [ الشرط الثاني ] Then [الك د البرمجي في ال ت قق الشرط الثاني] ElseIf.. ElseIf [ الشرط األخير ] Then [الك د البرمجي في ال ت قق الشرط األخير] End If 70

85 جمل الت كم بف ص الشرط األ ل فإذا ت قق يتم تنفيذ الك د البرمجي الذي يقع ت ته مباشرة IF في هذه ال الة تق م بف ص الشرط الثاني اذا ت قق ينفذ الك د ت ته If اذا لم يت قق تق م Ifثم ثم يتم الخر ج من دالة هكذا. If يتم الخر ج من دالة هنا مال ظة مهمة جدا هي أن جملة If ElseIf ال تق م بف ص كافة الشر ط انما تت قف عند أ ل شرط يت قق فتنفذ الك د البرمجي الخاص بذلك الشرط ثم يخرج البرنامج من دالة If يستمر في الك د الذي يلي الدالة. مثال في هذا المثال المطل ب ف ص القيمة في الخلية A1 )عالمة الطالب( من ثم عرض مربع التقدير الذي س ف يك ن كالتالي: التقدير الدرجة ممتاز Excellent أكبر من 90 جيد جدا Very Good تى أقل من 90 من 80 جيد Good تى أقل من 80 من 70 مقب ل Pass تى أقل من 70 من 60 راسب Fail أقل من 60 ار يظهر لل ص ل لذلك الهدف نستخدم جملة If ElseIf كما في اإلجرائية باألسفل كما تم ذكره سابقا ال تق م جملة If ElseIF بف ص جميع الشر ط انما تنتهي عند ت قق أي من الشر ط ففي هذا المثال اذا كانت عالمة الطالب أكبر من 90 يتم ف ص الشرط األ ل من ثم تنفيذ األ امر البرمجية الخاصة بذلك الشرط هي جملة "Excellent" MsgBox بعد ذلك يخرج البرنامج من دالة If يستمر في الك د الذي يلي الدالة )في هذا المثال الي جد أي ك د بعد دالة If لذلك فبمجرد الخر ج من دالة If س ف تنتهي اإلجرائية(: 71

86 الفصل السادس Sub StudentsGrades() If Range("A1").Value >= 90 Then MsgBox "Excellent" ElseIf Range("A1").Value >= 80 Then MsgBox "Very Good" ElseIf Range("A1").Value >= 70 Then MsgBox "Good" ElseIf Range("A1").Value >= 60 Then MsgBox "Pass" ElseIf Range("A1").Value < 60 Then MsgBox "Fail" End If End Sub استخدام If ElseIf Else من الممكن استخدام Else مع جملة If ElseIf في هذه ال الة يك ن م قع Else في النهاية يث أنه في ال عدم ت قق أي من الشر ط المعطاة يتم تطبيق الك د الذي يقع بعد كلمة.Else كمثال على ذلك تم إعادة كتابة اإلجرائية السابقة باستخدام If ElseIf Else كما ه باألسفل: 72

87 جمل الت كم Sub StudentsGrades() If Range("A1").Value >= 90 Then MsgBox "Excellent" ElseIf Range("A1").Value >= 80 Then MsgBox "Very Good" ElseIf Range("A1").Value >= 70 Then MsgBox "Good" ElseIf Range("A1").Value >= 60 Then MsgBox "Pass" Else MsgBox "Fail" End If End Sub غني عن الذكر أنه يمكنك استخدام If بداخل )Nested IFs( If عوامل المقارنات التي يمكن استخدامها Comparison operators العامل > < = >=, <= <> نوع المقارنة أكبر من أصغر من يسا ي أكبر من يسا ي أصغر من يسا ي ال يسا ي 73

88 الفصل السادس فهم العوامل المنطقية تستخدم الع امل المنطقية عادة في اجراء المقارنات بين نتائج تنفيذ الجمل البرمجية المنطقية. نتيجة تطبيق الع امل المنطقية هي إما ص يح Trueأ خطأ.False من أشهر الع امل المنطقية AND, OR, and NOT True أ خطأ False فمثال طبقا للقيمة الم ج دة بداخل الجمل المنطقية هي الجمل البرمجية التي يك ن نتيجة تنفيذها اما ص يح الجملة التالية هي جملة منطقية قد يك ن نتيجة تنفيذها True أ False الخلية A1: Range("A1").Value >= 70 العامل AND يستخدم العامل AND للمقارنة بين نتيجتين منطقيتين ب يث أنه يرجع القيمة True اذا كانت كال النتيجتين.True أما إذا كانت ا دي النتيجتين False فإن النتيجة النهائية س ف تك ن.False فمثال الجملة البرمجية التالية تك ن نتيجة تنفيذها True فقط في ال كانت نتيجة تنفيذ كال الجملتين المنطقتين على جانبي المعامل AND هي True )في الة هذا المثال يجب أن تك ن القيمة في الخلية A1 اكبر من 70 القيمة في الخلية B1 أكبر من 100): Range("A1").Value >70 AND Range("B1").Value >100 العامل OR يستخدم العامل OR للمقارنة بين نتيجتين منطقيتين ب يث أنه يرجع القيمة True اذا كانت ا دى النتيجتين أ كالهما.True أما إذا كانت كلتا النتيجتين False فإن النتيجة النهائية س ف تك ن.False فمثال الجملة البرمجية التالية تك ن نتيجة تنفيذها True في ال كانت نتيجة تنفيذ أي من الجملتين المنطقيتين على جانبي OR هي :True Range("A1").Value >70 AND Range("B1").Value >100 74

89 جمل الت كم مالحظة مهمة الع امل المنطقية ال تقارن بين قيم الخطأ فمثال االجرائية التالية س ف ترجع خطأ عند تنفيذها إذا لم يتم تعيين قيمة أكبر من صفر للمتغير rate يث أن القسمة على صفر هي عملية غير مسم ح بها. بالرغم من أن الجزء ال اقع على يسار OR من الجملة )Range("A1").Value > 70 OR Range("B1").Value / rate > 1( قد يك ن ص ي ا True إال أن VBA س ف يظهر خطأ Overflow األيمن من جملة المقارنة ي ت ي على عملية غير مسم ح بها. عند تشغيل البرنامج ألن الطرف Sub test() Dim rate As Integer If Range("A1").Value > 70 OR Range("B1").Value / rate > 1 Then MsgBox "Right!!!)" End If End Sub العامل NOT يستخدم العامل NOT لعكس النتيجة المنطقية. فإذا كانت نتيجة تطبيق الجملة التالية: Range("A1").Value > 70 هي False فإن النتيجة تصبح True إذا تم تطبيق المعامل NOT على الجملة كالتالي: Not Range("A1").Value > 70 75

90 الفصل السادس مثال اإلجرائية التالية تظهر مربع ال ار التالي إذا لم تكن قيمة الخلية A1 أكبر من 70. Figure 6-1 Sub Test2() If Not Range("A1").Value > 70 Then MsgBox "This value cannot be less than 70" End If End Sub مثال 2 Grid lines في رقة العمل Sub ToggleGridLines() اإلجرائية التالية تق م بالتبديل بين عرض أ عدم عرض خط ط الشبكة ال الية: ActiveWindow.DisplayGridlines = Not ActiveWindow.DisplayGridlines End Sub 76

91 جمل الت كم يمكن إضافة زر ل رقة العمل عند الضغط عليه يق م بإخفاء خط ط الشبكة إذا كانت ظاهرة العكس. خطوط الشبكة GridLines هي احدى خصائص الكائن Window وليس Worksheet كما قد يعتقد البعض. لذلك استخدمنا ActiveWindow.DisplayGridlines وليس.ActiveSheet. DisplayGridlines جملة Select Case statement إذا كان لديك العديد من الخيارات لالختيار فيما بينها فإن أنسب جملة لهذا الغرض هي جملة Select Case )في كثير من األ يان تك ن أفضل تى من جملة.)If Elseif تأخذ هذه الدالة جملة شرطية ا دة Expression العديد من الخيارات Options )النتائج الم تملة لتلك الجملة( عند ت قق أ د الخيارات يتم تنفيذ الك د المرافق لذلك الخيار يتم الخر ج من الدالة. تأخذ هذه الجملة الشكل العام التالي: تعبير الف ص Select Case Test_Expression الخيار األ ل Case الك د ال تطابق هذا الخيار مع نتيجة الف ص Code الخيار الثاني Case الك د ال تطابق هذا الخيار مع نتيجة الف ص Code.. أخرى Selectجمل. 77

92 الفصل السادس. Case Else الك د ال عم ج د تطابق End Select مثال في هذا المثال تم انشاء دالة تق م بأخذ مؤشر األداء للم ظف )قيمة من 1 إلى 10 يث 1 ه األعلى تقييما ( مقدار راتب الم ظف ترجع لنا مقدار مكافئة الم ظف. فلدينا اآلن التعبير Expression ه عبارة عن قيمة المتغير performance هذا التعبير له العديد من الخيارات )من 1 تى 10(. عند تطابق نتيجة التعبير مع أي من الخيارات يتم تنفيذ الك د لذلك الخيار ثم يتم الخر ج من جملة Case.Case Else اذا لم ي دث أي تطابق يتم تنفيذ الك د ال اقع ت ت Select Function Bonus(performance, salary) Select Case performance Case 1 Bonus = salary * 0.1 Case 2, 3 Bonus = salary * 0.09 Case 4 To 6 Bonus = salary * 0.07 Case Is > 8 78

93 جمل الت كم Bonus = 100 Case Else Bonus = 0 End Select End Function بالنسبة للخيارات ال ظ أنه هناك أكثر من شكل لف ص الخيارات: إذا كنا نريد نطابق مع قيمة م ددة نكتب القيمة الم ددة بعد كلمة Case مباشرة )مثل )Case 1 إذا كنا نريد أن نطابق مع أي قيمة ضمن نطاق من القيم المتجا رة نستخدم كلمة To )مثل Case )4 To 6 إذا كنا نريد أن نطابق مع أي قيمة ضمن مجم عة من القيم نستخدم الفاصلة مثل ( 2,3 )Case إذا كنا نريد أن نستخدم ع امل المقارنات نستخدم Is )مثل > 8 Is )Case مثال 2 في هذا المثال س ف نق م بإعادة كتابة اإلجرائية الخاصة بالتقدير التي تم كتابتها سابقا باستخدام جملة.If ElseIf هنا س ف نستخدم جملة Case Select كبديل عن جملة.If ElseIf ال ظ هنا أن الك د أكثر سه لة ض ا. Sub StudentsGrades() Select Case Range("A1").Value Case Is >= 90 MsgBox "Excellent" Case Is >= 80 MsgBox "Very Good" 79

94 الفصل السادس Case Is >= 70 MsgBox "Good" Case Is >= 60 MsgBox "Pass" Case Else MsgBox "Fail" End Select End Sub مثال 3 تق م اإلجرائية باألسفل بعرض الربع السن ي للتاريخ ال الي في مربع ار. تق م جملة تعبير الف ص هي Month(Date) بإرجاع رقم الشهر للتاريخ ال الي ( الذي تم ال ص ل عليه من خالل الدالة )Date قد ينتج عن تعبير الف ص 12 قيمة مختلفة )خيارات( تم تجميع كل 3 خيارات مع بعضها من خالل كلمة To لف ص التطابق بين نتيجة تعبير الف ص إ دى القيم ضمن المجم عات األربع من ثم ارجاع رقم الربع السن ي ال الي. Sub ShowCurrentQuarter() Select Case Month(Date) Case 1 To 3 MsgBox "Quarter 1" Case 4 To 6 80

95 جمل الت كم MsgBox "Quarter 2" Case 7 To 9 MsgBox "Quarter 3" Case 10 To 12 MsgBox "Quarter 4" End Select End Sub من الممكن كتابة اإلجرائية السابقة كما في الك د أدناه يث استخدمنا النقطتان الرأسيتان Colon كبديل إلدراج سطر جديد بعد كل كلمة.Case ذلك قد يساهم في جعل الك د أكثر سه لة في القراءة التتبع. Sub ShowCurrentQuarter() Select Case Month(Date) Case 1 To 3: MsgBox "Quarter 1" Case 4 To 6: MsgBox "Quarter 2" Case 7 To 9: MsgBox "Quarter 3" Case 10 To 12: MsgBox "Quarter 4" End Select End Sub 81

96 الفصل السادس 82

97 جمل التكرار Looping Statements الفصل السابع جمل التكرار 7. من خالل جمل التكرار تستطيع تكرار تنفيذ أ امر م ددة تى يت قق شرط معين. من األمثلة على استخدام جمل التكرار: تنفيذ عمليات معينة على جميع المصنفات أ أ راق العمل المفت ة. مثل فظ اغالق جميع المصنفات المفت ة. تنفيذ عمليات معينة على جميع عناصر مصف فة م ددة. تنفيذ عمليات معينة على جميع ال ر ف في جملة م ددة تنفيذ عمليات معينة على جميع عناصر مجم عة معينة Collection مثل عناصر مجم عة المخططات Charts collection هناك العديد من جمل التكرار التي ت فرها لنا لغة بالتفصيل. جملة For.Next.VBA في الفقرات القادمة س ف نتعرف عليها تعد هذه الجملة أبسط جمل التكرار. يتم الت كم بالتكرار Looping من خالل متغير يعمل كعداد Counter variable يث أن هذا المتغير يبدأ بقيمة م ددة ينتهي عند قيمة أخرى. يتم تكرار الجمل البرمجية التي تقع ما بين كلمتي Next For تى ص ل متغير العداد إلى قيمته النهائية. مثال 1 هذا مثال بسيط يق م بجمع األعداد من 1 إلى 100 بشكل تراكمي. 83

98 الفصل السابع Sub AddFirst100() Dim Total As Integer Dim Count As Integer Total = 0 For Count = 1 To 100 Total = Total + Count Next Count MsgBox Total End Sub في هذا المثال تم انشاء المتغير Count من ن ع Integer الستخدامه كعداد Counter variable من خالل جملة For تم تعيين القيمة الدنيا العليا له من خالل الجملة:.For Count = 1 To 100 بال ضع االفتراضي يزيد العداد بمقدار 1 عند كل تنفيذ لجملة For تى يصل لقيمته النهائية. تم انشاء المتغير Total من ن ع Integer ليتم تخزين اصل الجمع التراكمي به. في كل مرة يتم فيها تشغيل جملة If يتم زيادة قيمة هذا المتغير بمقدار المتغير.Count استخدام Step مع جملة for كما تم ذكره سابقا يزيد العداد بال ضع االفتراضي بمقدار 1 عند كل تنفيذ لجملة.for إذا كنت تريد أن تك ن الزيادة بمقدار قيمة أخرى من الممكن استخدام الكلمة المفتا ية Step مع جملة.If مثال إذا أردنا أن نق م بجمع األعداد الفردية ال اقعة ضمن النطاق من 1 اإلجرائية التالية: تى بشكل تراكمي نستخدم 84

99 جمل التكرار Sub AddFirst100_Odd() Dim Total As Integer Dim Count As Integer Total = 0 For Count = 1 To 100 Step 2 Total = Total + Count Next Count MsgBox Total End Sub هنا استخدمنا كلمة Step مع جملة for لجعل العداد يزيد بمقدار 2 في كل مرة بالتالي يتم في كل مرة جمع األرقام الفردية فقط. من الممكن أن تك ن قيمة Step بالسالب فمثال نستطيع كتابة جملة for في المثال األ ل كما يلي: Sub AddFirst100() Dim Total As Integer Dim Count As Integer Total = 0 For Count = 100 To 1 Step -1 Total = Total + Count Next Count 85

100 الفصل السابع MsgBox Total End Sub في هذا الك د جعلنا العداد يسير بالعكس من آخر قيمة تى أ ل قيمة له في كل تنفيذ لجملة for انقاص قيمة العداد بمقدار 1 من خالل استخدام 1-.Step يتم مثال 3 في هذا المثال يق م الك د يق م بإدراج عدد م دد من أ راق العمل بشكل ا ت ماتيكي. ب يث أن عدد أ راق العمل المطل ب اضافته يتم إدخاله من قبل المستخدم عن طريق مربع ادخال.Input box في داخل جملة for تم استخدام الجملة Sheets.Add الضافة رقة عمل في كل مرة يتم فيها تنفيذ جملة.for Sub AddSheets() Dim SheetsNumber As Integer, counter As Integer SheetsNumber = InputBox("Please add the number of sheets you would like to add ") For counter = 1 To SheetsNumber Sheets.Add Next End Sub مثال 4 يق م الك د التالي بتظليل سطر كل ثالثة أسطر. نتيجة تنفيذ هذه اإلجرائية هي كما في الشكل

101 جمل التكرار Sub ShadeEveryThirdRow() Dim i As Long For i = 1 To 100 Step 3 Rows(i).Interior.Color = RGB(200, 200, 200) Next i End Sub Figure

102 الفصل السابع الخروج من جملة for من خالل جملة Exit For من الممكن استخدام الجملة Exit For إلنهاء جملة التكرار الخر ج منها. عادة ما تستخدم هذه الكلمة بعد أن يتم الت قق من ج د شرط معين فإذا ت قق هذا الشرط يتم الخر ج من جملة.for مثال في هذا المثال تم انشاء جملة تكرار تق م بإدخال القيم من 1 تى 10 في الخاليا بدءا من الخلية A1 عم ديا باتجاه األسفل بمقدار 10 خاليا - من خالل جملة.Cells(counter, (1 = counter تم استخدام دالة If لف ص قيمة العداد في ال أصب ت قيمة العداد 4 counter يتم الخر ج من جملة.For Private Sub Exit_For_Demo() Dim counter As Integer For counter = 1 To 10 Cells(counter, 1) = counter If counter = 4 Then Cells(counter, 1) = counter * 10 Exit For End If Next End Sub مثال 2 هنا مثال أكثر تط را عن استخدام Exit For مع دالة.For في هذا المثال تم استخدام جملة For مع Exit For إلنشاء دالة تأخذ معامل ا د ه عبارة عن جملة ثم تق م باستخراج ال ر ف ال اقعة على 88

103 جمل التكرار يسار أ ل رقم من تلك الجملة فمثال إذا تم ادخال الجملة التالية على الدالة ABC123 تق م الدالة بإرجاع ABC أما إذا تم ادخال AB1245 تق م بإرجاع AB هكذا. تعمل هذه الدالة بالشكل التالي: 1- تق م الدالة بتخزين قيمة الجملة المدخلة )معامل الدالة( في متغير باسم.Str 2- تعطي المتغير TextPart قيمة فارغة مبدئيا. 3- تم استخدام الدالة المدمجة Len إلرجاع عدد األ رف في النص المدخل. من خالل Len(Str) 4- تم استخدام جملة For مع الد ال Mid IsNumber لف ص كل رمز Charachter من النص بدءا من اليسار هل الرمز عبارة عن رقم أم ال. يث أن الدالة Mid تق م باستخراج رمز ا د من النص المعطى في كل مرة يتم فيها تنفيذ جملة For -بدءا من اليسار- بينما تق م الدالة IsNumber بف ص هل الرمز رقم أم ال. 5- بالنسبة لجملة For تم استخدام المتغير i كعداد لجملة التكرار تم ت ديد القيمة الدنيا للعداد ب 0 العليا بعدد الرم ز في النص المعطى )الذي تم ال ص ل عليه من خالل.Len(Str) 6- تق م جملة If الم ج دة بداخل جملة التكرار كل مرة بف ص نتيجة تنفيذ الجملة ((1,i.IsNumeric(Mid(Str, في ال كانت النتيجة True )أي أن الرمز عبارة عن رقم(. تق م بإنهاء جملة التكرار من خالل تطبيق جملة.Exit For إال فإنها تق م بإضافة الرمز بجانب الرم ز السابقة من خالل معامل الربط & ضع النتيجة في المتغير.TextPart هي القيمة التي تق م الدالة بإرجاعها في النهاية. Function TextPart(Str) TextPart = "" For i = 1 To Len(Str) If IsNumeric(Mid(Str, i, 1)) Then Exit For Else 89

104 الفصل السابع TextPart = TextPart & Mid(Str, i, 1) End If Next i End Function جملة For المتداخلة من الممكن استخدام جملة For بداخل جملة أخرى إلنشاء جمل تكرار أكثر تعقيدا. في المثال التالي استخدمنا هذه التقنية لعمل شكل ل ة الشطرنج على رقة العمل كما في الشكل 7-2 Figure

105 جمل التكرار Sub MakeCheckerboard() Dim Row As Integer, Col As Integer For Row = 1 To 8 If WorksheetFunction.IsOdd(Row) Then For Col = 2 To 8 Step 2 Cells(Row, Col).Interior.Color = 0 Next Col Else For Col = 1 To 8 Step 2 Cells(Row, Col).Interior.Color = 0 Next Col End If Next Row End Sub الفكرة في هذا المثال هي أن ل ة الشطرنج تتك ن من ثمانية أعمدة ثمانية صف ف في الصف ف الفردية تك ن الخاليا الز جية مل نة باألس د أما في الصف ف الز جية تك ن الخاليا الفردية مل نة باألس د. لذلك أنشأنا جملة For الخارجية إلنشاء تكرار على مدى الثمانية صف ف. بداخل جملة For الخارجية هناك جملتي For ا دة للتكرار عبر أعمدة الصف ف الفردية األخرى للتكرار عبر أعمدة الصف ف الز جية. هنا استخدمنا دالة رقة العمل IsOdd لف ص هل الصف فردي أم ز جي. بالنسبة للصف ف الفردية )التي تك ن نتيجة تنفيذ دالة IsOdd فيها )True تق م جملة For بالتكرار عبر األعمدة الز جية من 2 تى 8 من خالل جملة For Col = 2 To 8 Step 2 ال ظ هنا أننا استخدمنا Step 2 للقفز بقيمة العداد بمقدار 2 في كل تكرار. في كل تكرار يتم تل ين الخلية الناتجة عن تقاطع ذلك الصف الفردي مع العم د الز جي بالل ن األس د من خالل الك د: Cells(Row, Col).Interior.Color = 0 بالمثل يتم تل ين الخاليا الفردية في الصف ف الز جية. 91

106 الفصل السابع جملة For Each Next تستخدم جملة For Each Next لتكرار تنفيذ مجم عة من األ امر على كل عنصر من عناصر مجم عة Collections أ مصف فة Array مثل أن تستخدم هذه الجملة لتنفيذ أ امر معينة على أ راق العمل ضمن مصنف ما أ على خاليا ضمن أ د النطاقات. في هذا الن ع من جملة For ال يتم استخدام متغيرا كعداد Counter variable يث أن الهدف ه تطبيق األ امر البرمجية على جميع عناصر المجم عة.Collection للمزيد ل المجم عات Collections راجع الفصل الثاني )م رر األك اد( Arrays راجع الفصل الرابع )المتغيرات( ل المصف فات For Each Next مثال يق م الك د باألسفل باستخدام ال الي. بإغالق كل المصنفات المفت ة ما عدا المصنف Sub CloseWorkbooks() Dim wb As Workbook For Each wb In Workbooks If wb.name <> ThisWorkbook.Name Then wb.save wb.close End If Next wb End Sub من هذا المثال يتضح لنا أن هناك أربع خط ات لكتابة جملة For Each Next هي كالتالي: 1- اإلعالن عن متغير لكائن معين من نفس ن ع العناصر التي نرغب بتكرار العمليات عليها. في هذا المثال تم اإلعالن عن متغير باسم wb من ن ع. Workbook 92

107 جمل التكرار كتابة جملة For Each Next باستخدام العنصر الذي تم اإلعالن عنه في الخط ة 1 التجميعة For Each التي ينتمي لها العنصر. هنا استخدمنا السطر التالي للبدء بجملة Collection :Next For Each wb In Workbooks تبدأ الجملة ب For Each ثم اسم المتغير )هنا اسمه )wb ثم الكلمة المفتا ية In ثم اسم التجميعة التي ينتمي اليها المتغير ( هي هنا.)Workbooks كتابة أسطر األ امر التي نريد تكرارها عبر عناصر التجميعة المطل بة. هنا استخدمنا جملة If لف ص اسم كل عنصر من عناصر التجميعة )في هذا المثال عناصر التجميعة عبارة عن مصنفات( من ثم فظ إغالق أي مصنف اسمه مختلف عن اسم المصنف ال الي If wb.name <> ThisWorkbook.Name Then wb.save wb.close End If مثال 2 تق م اإلجرائية التالية بإخفاء جميع أ راق العمل في المصنف ال الي ما عدا رقة العمل ال الية. Sub HideSheets() Dim Sh As Worksheet For Each Sh In ActiveWorkbook.Worksheets If Sh.Name <> ActiveSheet.Name Then Sh.Visible = xlsheethidden End If Next Sh End Sub 93

108 الفصل السابع مثال 3 تق م اإلجرائية التالية بإظهار جميع أ راق العمل المخفية مرة ا دة ( هذا شيء ال يمكن عمله من خالل االكسيل يث أنك من خالل االكسيل تستطيع اظهار رقة عمل ا دة فقط في كل مرة ال يمكن اظهار جميع األ راق المخفية مرة ا دة( Sub UnhideSheets() Dim ws As Worksheet For Each ws In Worksheets ws.visible = xlsheetvisible Next ws End Sub مثال 4 في هذا المثال تق م اإلجرائية التالية بتل ين الخاليا الفردية في النطاق A1:A20 بالل ن األس د. في البداية تم تعريف متغيرين من ن ع Range هما.cell Rng ثم تم تعيين النطاق A1:A20 للمتغير Rng من خالل السطر البرمجي: Set Rng = Range("A1:A20") ثم تم كتابة جملة For Each Next للتكرار عبر عناصر مجم عة النطاق Range collection )الم ج دة داخل المتغير )Rng ذلك من خالل المتغير.cell يث يتم ف ص المتغير cell )في هذا المثال يمثل المتغير cell خلية ا دة أ باأل رى نطاقا يتك ن من خلية ا دة( في كل مرة يتم فيها التكرار من خالل دالة رقة العمل IsOdd إذا كانت الخلية تقع ضمن صف فردي يتم تل ين الخلية بالل ن األس د. Sub PaintOddCells() Dim Rng As Range, cell As Range Set Rng = Range("A1:A20") For Each cell In Rng 94

109 جمل التكرار If WorksheetFunction.IsOdd(cell.Row) Then cell.interior.color = 0 End If Next End Sub Figure

110 الفصل السابع مثال 5 تق م اإلجرائية التالية ب ذف جميع أ راق العمل الفارغة من المصنف ال الي. تعمل هذه اإلجرائية كالتالي: 1- تم تعريف متغير من ن ع Worksheet باسم ws 2- تم انشاء جملة For Each Next للتكرار عبر عناصر مجم عة أ راق العمل Worksheets.ws من خالل المتغير Collection 3- في كل مرة يتم فيها التكرار يتم تطبيق جملة If على المتغير ws الذي ي ت ي على إ دى أ راق العمل. تق م جملة If باستخدام دالة رقة العمل CouontA لف ص ما إذا كانت خاليا رقة العمل ت ت ي على أية بيانات. يث أنه كما نعلم تق م دالة CountA ب ساب عدد الخاليا التي ت ت ي على بيانات في نطاق م دد. تأخذ الدالة CountA المعامل ws.cells الذي ه عبارة عن نطاق يشمل جميع خاليا رقة العمل. 4- في كل مرة تك ن فيها نتيجة تنفيذ الدالة CountA صفر )أي أن ال رقة فارغة( يتم ذف رقة العمل من خالل السطر البرمجي: Ws.Delete 5- إللغاء رسائل الت ذير التي قد تظهر عند ذف أ راق العمل استخدمنا الجملة في بداية اإلجرائية: Application.DisplayAlerts = False ثم أرجعنا ال ضع لما كان عليه في نهاية اإلجرائية من خالل إعادة تفعيل رسائل الت ذير عن طريق الجملة التالية: Application.DisplayAlerts = True إذا لم نعطل اظهار رسائل الت ذير فس ف يق م االكسيل بإظهار رسالة ت ذير في كل مرة تق م هذه اإلجرائية بم ا لة ذف إ دى أ راق العمل. Sub DeleteEmptySheets() Dim Ws As Worksheet Application.DisplayAlerts = False For Each Ws In ActiveWorkbook.Worksheets 96

111 جمل التكرار If WorksheetFunction.CountA(Ws.Cells) = 0 Then Ws.Delete End If Next Ws Application.DisplayAlerts = True End Sub التكرار باستخدام الجملة Do While Loop عند تطبيق هذه الجملة يتم ف ص شرط معين طالما أن هذا الشرط مت قق بداخل جملة التكرار. تأخذ هذه الجملة الشكل العام التالي: True يتم تنفيذ األ امر [الشرط] Do While [مجم عة من األ امر البرمجية] Loop كمثال بسيط على كيفية استخدام هذه VBA" " Hello خمس مرات. الجملة تق م اإلجرائية باألسفل بعرض مربع ار يظهر الجملة Sub DoWhileDemo() Dim counter As Integer counter = 1 Do While counter <= 5 MsgBox ("Hello VBA, " & counter) counter = counter + 1 Loop End Sub تعمل هذه اإلجرائية كالتالي: 1. تم اإلعالن عن متغير ليعمل كعداد أ عطي االسم counter تم تعيين قيمة مبدئية له ب 1. 97

112 الفصل السابع في جملة Do While تم استخدام الشرط => 5 counter يث أنه طالما أن هذا الشرط مت قق True يتم تنفيذ ما بداخل جملة التكرار. بداخل جملة التكرار هناك سطران برمجيان )أمران( هما: MsgBox ("Hello VBA, " & counter) counter = counter + 1 في السطر األ ل يتم اظهار مربع ار بالجملة VBA" " Hello مع رقم العداد أما في السطر الثاني فيتم زيادة العداد counter بمقدار 1 في كل مرة يتم فيها التكرار. عند ص ل العداد counter إلى الرقم 6 تصبح نتيجة الجملة الشرطية False بالتالي يتم الخر ج من التكرار مثال 2 تق م اإلجرائية التالية بالتكرار عبر مجم عة من الخاليا التي تقع في نفس العم د بدءا من الخلية النشطة شرط التكرار هنا أن ال تك ن الخلية فارغة )من خالل (. ActiveCell.Value <> Empty في ال أن الخلية ت ت ي على قيمة يتم ضرب القيمة في 2 من خالل األمر = ActiveCell.Value * 2 ActiveCell.Value ثم يتم الت رك بالخلية النشطة لألسفل بمقدار صف ا د من خالل األمر.ActiveCell.Offset(1, 0).Select يتم تكرار العملية تى تصبح الخلية النشطة فارغة عندها يتم الخر ج من جملة التكرار. Sub DoWhileDemo() Do While ActiveCell.Value <> Empty ActiveCell.Value = ActiveCell.Value * 2 ActiveCell.Offset(1, 0).Select Loop End Sub 98

113 جمل التكرار جملة Do Until Loop تشابه هذه الجملة جملة Do While إال أن التكرار يتم هنا طالما أن الشرط غير مت قق False بعكس جملة.Do While فمثال إذا أردنا كتابة المثال األ ل باستخدام Do Until تصبح اإلجرائية كالتالي: Sub DoWhileDemo() Dim counter As Integer counter = 1 Do until counter > 5 MsgBox ("Hello VBA, " & counter) counter = counter + 1 Loop End Sub Sub DoWhileDemo() Do until IsEmpty(ActiveCell.Value ) ActiveCell.Value = ActiveCell.Value * 2 ActiveCell.Offset(1, 0).Select Loop End Sub أما المثال الثاني فيمكن إعادة كتابته باستخدام Do Until كالتالي: 99

114 الفصل السابع 100

115 الد ال الفصل الثامن.8 استخدام دوال ورقة العمل ودوال VBA في السابق ذكرنا أنه بإمكانك استخدام الد ال Function بداخل الك د البرمجي الخاص ب.VBA في هذا الفصل س ف نتعرف على أن اع الد ال الثالثة التي يمكن للغة VBA التعامل معها هي الد ال المدمجة في VBA الد ال المدمجة في اإلكسيل )تسمى د ال رقة العمل )Worksheet functions الد ال المخصصة Custom functions هي التي تق م أنت بكتابتها. ما هي الدالة الدالة Function هي عبارة عن مجم عة من األسطر البرمجية تم تنظيمها بشكل معين ب يث تق م ببعض ال سابات أ اإلجراءات من ثم ترجع قيمة ا دة. فمثال دالة SUM هي أشهر د ال رقة العمل تأخذ مجم عة من القيم )س اء أكانت في نطاقات أم ال( ثم ت سب اصل جمع المعطيات ترجع قيمة ا دة فقط هي قيمة اصل الجمع. الدوال المدمجة في )Built-In VBA Functions( VBA ت فر لنا لغة VBA العديد من الد ال المدمجة التي تسهل ياة المبرمج تجعل الك د أكثر سرعة سه لة. بعض تلك الد ال يأخذ معامال أ مجم عة من المعامالت Arguments بعضها ال يأخذ. في هذا الجزء س ف نق م باستعراض بعض الد ال. بطبيعة ال ال هناك عدد كبير جدا من الد ال المدمجة في 101

116 الفصل الثامن VBA هدف هذا الفصل ليس شرح جميع هذه الد ال انما إعطاء بعض األمثلة التي نستطيع من خاللها أن ن ضح كيفية التعامل مع هذا الن ع من الد ال. الدوال Date, Time, and Now تق م دالة Date بإرجاع تاريخ الي م أما الدالة Time فترجع ال قت ال الي بينما ترجع الدالة Now التاريخ ال قت ال اليين. المثال التالي يق م بعرض ال قت ال الي في مربع ار: Sub ShowCurrentDate() MsgBox "Today is: " & Date End Sub ال ظ هنا أن هذه الد ال ال تأخذ معامالت ال تى أق اس فارغة بخالف دالتي رقة العمل Date and Time اللتان تأخذان مجم عة من المعامالت دالة رقة العمل Now التي تأخذ أق اس فارغة. في ال اقع ل أنك أضفت أق اسا فارغة للد ال السابقة فإن م رر VBE س ف يق م بإزالتها. دالة Len تق م دالة Len ب ساب عدد األ رف في الجملة تأخذ معامال ا دا ه عبارة عن الجملة المراد معرفة عدد األ رف بها. تق م اإلجرائية التالية ب ساب عدد األ رف المك نة السم المستخدم لبرنامج االكسيل: Sub GetNameLength() End Sub Dim UserName As String MsgBox "Number of characters in the username is: " & Len(Application.UserName) ال ظ هنا أننا استخدمنا أ د خصائص تطبيق االكسيل هي خاصية UserName لمعرفة اسم المستخدم لبرنامج االكسيل من خالل.Application.UserName يث استخدمناه كمعامل لدالة.Len 102

117 الد ال عند تنفيذ اإلجرائية ن صل على النتيجة كما بالشكل 8-1 Figure 8-1 دالتي Month and MonthName تق م الدالة Month بعرض رقم الشهر لتاريخ معطى بينما تق م الدالة MonthName بأخذ رقم الشهر عرض اسمه. السطر البرمجي التالي يق م بعرض رقم الشهر للتاريخ المعطى: Month(#1/12/2019#) تذكر أن تضع التاريخ بين عالمتي السلم )#( ال ظ هنا أن التاريخ يجب أن تتم كتابته بالنظام األمريكي )Month/Day/Year( بناء على ذلك فنتيجة تنفيذ السطر السابق هي )1(. Sub ShowMonthName() مثال 2: اإلجرائية التالية تق م بعرض اسم الشهر للتاريخ ال الي: Dim MonthNumber As Integer MonthNumber = Month(Date) MsgBox MonthName(MonthNumber) End Sub 103

118 الفصل الثامن يمكن اختصار الك د السابق كما يلي: Sub ShowMonthName() End Sub MsgBox MonthName(Month(Date)) ال ظ هنا اننا استخدمنا الد ال المتداخلة Nested functions الختصار السطر البرمجية. يث أننا استخدمنا الدالة Date كمعامل للدالة Month الدالة Month كمعامل للدالة.MonthName استخدام الدالة TypeName لتحديد نوع الكائن المحدد تستخدم اإلجرائية التالية الدالة TypeName لعرض ن ع الكائن الم دد: Sub ShowType() Dim ObjectType As String ObjectType = TypeName(Selection) MsgBox ObjectType End Sub إذا كان العنصر الم دد عبارة عن ص رة فإن نتيجة تنفيذ اإلجرائية السابقة هي كما في الشكل

119 الد ال Figure 8-2 دوال VBA التي ال ترجع قيمة هناك بعض د ال ال VBA ال تق م بإرجاع قيم عند تنفيذها لكنها تق م بفعل معين هي كالتالي: دالة :MsgBox تم التعرض لهذه الدالة مرات عديدة خالل هذا الفصل الفص ل السابقة هي تق م بعرض مربع ار ي ت ي على نص /أ أزرار ت كم. إذا كان مربع ال ار الناتج عن هذه الدالة ي ت ي على أزرار ت كم ضغط المستخدم على أ د هذه األزرار فإن الدالة تق م بإرجاع قيمة م ددة يث أنه من الممكن استخدام هذه القيمة في البرنامج لت ديد كيفية سيره )كأن يضغط المستخدم زر Cancel فيتم الغاء العملية أ OK للسير في البرنامج(. دالة :InputBox تق م هذه الدالة بعرض مربع ار بسيط يطلب من المستخدم ادخال قيمة معينة من ثم يتم استخدام هذه القيمة في البرنامج. المثال التالي ي ضح كيفية استخدام هذه الدالة يث يطلب البرنامج من المستخدم ادخال رقم من ثم يرجع مربع الرقم:

120 الفصل الثامن Sub Power2() Dim Number As Double Number = InputBox("Enter a number: ") MsgBox Number * Number End Sub عند تشغيل البرنامج س ف يظهر لنا مربع االدخال الخاص بدالة InputBox كما في الشكل 8-3. بعد أن يتم ادخال الرقم المطل ب في مربع االدخال س ف يتم تعيين تلك القيمة للمتغير Number من ثم ستق م الدالة MsgBox بعرض مربع القيمة في مربع ار. Figure 8-3 الدالة :Shell تستطيع من خالل هذه الدالة استدعاء أ امر نظام التشغيل يند ز أي تطبيق مثبت على النظام. تأخذ الدالة الشكل التالي: بالتالي تشغيل -3 Shell (Program,WindowStyle) يث أن Program ه اسم البرنامج المطل ب تشغيله WindowStyle ه كيفية اظهار نافذة البرنامج الذي تم استدعاؤه )كأن تك ن مكبرة Maximize أ مصغرة Minimized تم التركيز عليها Focused أ لم يتم التركيز عليها Not Focused...الخ(. يظهر لنا الشكل 8-4 خيارات 106

121 الد ال اظهار النافذة ال ظ هنا أن م رر األ امر VBE يساعدك في االختيار بين الخيارات المختلفة فبمجرد ضع الفاصلة التي تلي اسم البرنامج المطل ب يق م VBE بعرض قائمة بالخيارات لالختيار منها. ال ظ أيضا أن اسم البرنامج يجب أن ي ضع بداخل عالمات االقتباس. Figure 8-4 من التطبيقات المفيدة لهذه الدالة استدعاء برنامج اآللة ال اسبة إلجراء ال سابات أثناء استخدام البرنامج أ برنامج التقاط الشاشة Snipping Tool ألخذ ص ر لشاشة ال اسب أثناء تشغيل البرنامج. تق م هذه الدالة بإرجاع رقم العملية الخاص بالبرنامج الم ستدع ى (PID) Process ID يجب تعيين هذه القيمة لمتغير تى يمكن تشغيل البرنامج الذي تم استدعاؤه. اإلجرائية التالية تق م باستدعاء برنامج اآللة ال اسبة هنا تم اإلعالن عن المتغير PID )من األفضل أن يك ن من ن ع Variant في الة هذه الدالة( من ثم تم تعيين قيمة تنفيذ الدالة Shell إليه. بالطبع يمكن ربط هذه اإلجرائية مع زر أ امر أ شكل لتشغيلها كما رأينا في الفصل الثالث. Sub LaunchCalc() Dim PID As Variant PID = Shell("calc", vbnormalfocus) End Sub 107

122 الفصل الثامن طلب المساعدة من محرر األكواد في كتابة الدوال لرؤية جميع الد ال المدمجة في VBA يمكنك بالطبع اللج ء إلى نظام المساعدة الخاص ب VBA عن طريق الضغط على F1 ا من خالل الذهاب لقائمة.Help كما يمكنك أيضا كتابة vba في أي مكان بداخل م رر األك اد متب عا بالنقطة (. ) فيق م م رر األك اد بعرض قائمة بجميع الد ال المتا ة في VBA هنا يمكنك االستفادة من ميزة االكمال التلقائي يث أنك بمجرد كتابة األ رف األ لى من الدالة المطل بة تى يق م VBE باختصار القائمة ليعرض فقط الد ال التي تبدأ باأل رف التي تم كتابتها. شكل 8-5 Figure 8-5 دوال ورقة العمل Worksheet Functions بالرغم من العدد الكبير للد ال المدمجة في VBA إال أنك أ يانا قد ال تجد ما تب ث عنه ضمن تلك الد ال. لكي تعطيك VBA خيارات أخرى فقد سم ت لك لغة VBA الكسيل باستخدام معظم د ال رقة العمل )د ال رقة العمل التي ال يسمح لك م رر VBE باستدعائها هي الد ال التي ي جد ما يكافئها في الد ال المدمجة في VBA مثل دالة Now على سبيل المثال(. الستخدام د ال رقة العمل من الممكن استخدام الكائن WorksheetFunction الم ج د ضمن كائن Application متب عا بدالة رقة العمل. كمثال على استخدام د ال رقة العمل SUM انظر الك د التالي الذي يق م بإيجاد اصل جمع خاليا النطاق.A1:A10 total = Application.WorksheetFunction.Sum(Range("A1:A10")) من الممكن ذف جزء Application أ جزء WorksheetFunction من السطر البرمجي السابق ال ص ل على نفس النتيجة. فالجمل الثالثة التالية تؤدي إلى نفس النتيجة: 108

123 الد ال total = Application.WorksheetFunction.Sum(Range("A1:A10")) total = WorksheetFunction.Sum(Range("A1:A10")) total = Application.Sum(Range("A1:A10")) ربما كان من األفضل استخدام الجملة البرمجية التي يظهر بها WorksheetFunction الك د في هذه ال الة يك ن أكثر ض ا. بعض األمثلة على استخدام دوال ورقة العمل إيجاد الحد األعلى واألدنى وثاني أكبر قيمة في نطاق محدد من الممكن استخدام اإلجرائية التالية إليجاد المطل بات أعاله. يث أن Sub MinMax() Dim TheMax As Double Dim TheMin As Double Dim Second_Large As Double TheMax = WorksheetFunction.Max(Range("A1:A10")) TheMin = WorksheetFunction.Min(Range("A1:A10")) Second_Large = WorksheetFunction.Large(Range("A1:A10"), 2) MsgBox "Maximum number in the range is " & TheMax MsgBox "Minimum number in the range is " & TheMin MsgBox "second large number in the range is " & Second_Large End Sub 109

124 الفصل الثامن في هذه اإلجرائية يق م السطر TheMax = WorksheetFunction.Max(Range("A1:A10")) بإيجاد القيمة القص ى تخزين الناتج في المتغير.TheMax بينما يق م السطر MsgBox "Minimum number in the range is " & TheMin بإيجاد القيمة الدنيا تخزين الناتج في المتغير.TheMin يق م السطر التالي بإيجاد ثاني أكبر قيمة تخزين الناتج في المتغير Second_Large Second_Large = WorksheetFunction.Large(Range("A1:A10"), 2) من ثم تق م اإلجرائية بعرض النتائج من خالل ثالث مربعات مثال على استخدام الدلة VLOOKUP ار متتالية. هذا المثال يفترض أن لديك جد ل باألصناف ي ت ي على اسم الصنف السعر. تأخذ اإلجرائية التالية رقم المنتج عن طريق مربع ادخال InputBox من ثم تق م بالب ث عن السعر الم افق لذلك المنتج عن طريق دالة رقة العمل VLOOKUP ترجع النتيجة من خالل مربع ار.MsgBox Sub ShowPrice() Dim PartNo As Variant Dim price As Double PartNo = InputBox("Enter the part number to get its price") Sheets("Prices").Activate price = WorksheetFunction.VLookup(PartNo, Range("A1:B10"), 2, False) MsgBox price End Sub 110

125 الد ال تعمل هذه اإلجرائية كالتالي: تطلب من المستخدم ادخال رقم الصنف من خالل مربع ادخال عن طريق السطر البرمجي التالي: -1 PartNo = InputBox("Enter the part number to get its price") تتأكد اإلجرائية من أن رقة العمل الفعالة هي ال رقة التي ت ت ي عل جد ل األسعار ( هي رقة )Prices من خالل السطر البرمجي التالي: -2 Sheets("Prices").Activate تق م اإلجرائية باستخدام دالة رقة العمل VLOOKUP للب ث عن سعر الصنف بداللة رقمه الذي تم ال ص ل عليه من الخط ة رقم 1 من خالل السطر التالي: -3 price = WorksheetFunction. VLookup(PartNo, Range("A1:B10"), 2, False) 4- تق م اإلجرائية بعرض السعر من خالل مربع ار. 111

126 الفصل الثامن 112

127 التعامل مع األخطاء الفصل التاسع.9 التعامل مع األخطاء في VBA األخطاء من األم ر الشائعة جدا عند التعامل مع VBA تنقسم األخطاء في VBA إلى ثالثة أقسام: 1- األخطاء التشغيلية -2 أخطاء الصياغة Syntax errors 3- األخطاء المنطقية األخطاء التشغيلية Runtime time errors األخطاء التشغيلية هي األخطاء التي ت دث أثناء تشغيل البرنامج هي ت دث عندما ي ا ل البرنامج اجراء عملية غير شرعية اما بسبب ادخال خاطئ مثل أن يق م المستخدم بإدخال قيمة نصية في ين يت قع البرنامج قيمة رقمية أ أن ي ا ل البرنامج اجراء عملية ما على عنصر غير م ج د مثل أن يك ن البرنامج مبرمجا إلجراء عملية ما على رقة العمل Sheet2 بينما ال ي ت ي المصنف على رقة العمل هذه أ أي عملية أخرى غير شرعية مثل القسمة على صفر. عند د ث هذا الن ع من األخطاء يت قف البرنامج عن العمل ي ظهر رسالة خطأ. في الشكل 9-1 يظهر خطأ تشغيليا ناتج عن م ا لة البرنامج القسمة على صفر. 113

128 الفصل التاسع Figure 9-1 من ال سائل التي يمكن استخدامها لتالفي األخطاء التشغيلية اجراء عملية ت قق للبيانات للمستخدم بإدخال الن ع المناسب. كمثال على ذلك انظر الك د التالي: السماح Sub test() Dim i As Double i = InputBox("Enter a value") x = Sqr(i) MsgBox x End Sub تق م هذه اإلجرائية بعرض الجذر التربيعي للرقم الذي يق م المستخدم بإدخال من خالل مربع رسائل ثم تق م بكتابة تلك القيمة في الخلية النشطة. يعمل البرنامج بشكل ممتاز طالما أن المستخدم يدخل قيما م جبة أما إذا ا ل المستخدم ادخال رقم أقل من صفر فإن البرنامج سي ظهر رسالة خطأ. 114

129 التعامل مع األخطاء لتالفي هذه الخطأ من الممكن استخدام اجراء عملية ت قق للبيانات التي في الك د التالي: يق م المستخدم بإدخالها كما Sub test() Dim i As Double i = InputBox("Enter a value") If i < 0 Then MsgBox "You must enter a positive number." Exit Sub End If x = Sqr(i) MsgBox x End Sub هنا استخدمنا جملة If إلجراء عملية الت قق من ص ة البيانات من خالل ف ص قيمة الرقم المدخل فإذا كان ذ قيمة أقل من صفر تق م جملة If بعرض رسالة خطأ من ثم يتم الخر ج من اإلجرائية من خالل جملة.Exit Sub هل انتهينا جرب أن تدخل قيمة نصية. ماذا ل كانت رقة العمل النشطة هي عبارة عن رقة مخطط سيظهر لك خطأ تشغيليا أيضا. من الممكن أن تكتب جمل أخرى اضافية للت قق من ص ة البيانات المدخلة كما في الك د التالي ( ا دة للت قق من أن القيمة المدخلة هي قيمة رقمية أخرى للت قق من أن الت ديد ه على نطاق Range ليس على عنصر آخر مثل الص ر أ المخططات(. Sub test() Dim i As Variant i = InputBox("Enter a value") 115

130 الفصل التاسع If i < 0 Then MsgBox "You must enter a positive number." Exit Sub End If If TypeName(Selection) <> "Range" Then MsgBox "Select a cell for the result." Exit Sub End If If Not IsNumeric(i) Then MsgBox "You must enter a number." Exit Sub End If x = Sqr(i) MsgBox x ActiveCell.Value = x End Sub هنا استخدمنا الجملة "Range" If TypeName(Selection) <> للت قق من أن الت ديد على نطاق من الخاليا جملة If Not IsNumeric(i) Then للت قق من أن االدخال ليس نصيا. هل انتهينا بعد جرب أن تك ن رقة العمل النشطة م مية سيظهر لك خطأ تشغيليا. 116

131 التعامل مع األخطاء لس ء ال ظ قد ال يمكنك تخمين جميع األخطاء التشغيلية التي قد تظهر أثناء تشغيل البرنامج إضافة إلى أن استخدام مجم عة كبيرة من جمل الت قق من الص ة يجعل البرنامج أكثر تعقيدا. هنا يعطيك االكسيل خيارا آخر للتعامل مع األخطاء التشغيلية أال ه جملة.On Error جملة On Error GoTo تق م جملة On Error باعتراض جميع أن اع األخطاء التشغيلية التي قد تظهر من ثم يمكن من خاللها ت ديد نقطة م ددة في البرنامج يستمر البرنامج بعدها بعد أن يك ن قد تجا ز الخطأ التشغيلي. في اإلجرائية التالية أعدنا كتابة المثال السابق الخاص بالجذر التربيعي انما باستخدام جملة On Error ك سيلة لتالفي ظه ر األخطاء التشغيلية. Sub test() End Sub Dim i As Double On Error GoTo bad_entry i = InputBox("Enter a value") x = Sqr(i) MsgBox x Exit Sub bad_entry: msg = "Bad entry. Please make sure that entry is number greater than zero," msg = msg & " you select a cell, and worksheet is not protected" MsgBox msg 117

132 الفصل التاسع ال ظ هنا أننا استخدمنا تسمية Label مع جملة On Error إلخبار البرنامج بأن يستمر من بعد تلك التسمية. في هذا المثال تم استخدام التسمية bad_entry: )ال ظ هنا أن التسمية يجب أن تك ن متب عة بالنقطتين الرأسيتين( بينما تم استخدام الكلمة المفتا ية GoTo مع جملة On Error متب عة باسم التسمية التي س ف يستمر البرنامج من بعدها عند د ث خطأ ما. جملة Exit Sub ال ظ أنه في هذا المثال أننا استخدمنا الجملة Exit Sub قبل التسمية bad_entry مباشرة يث أن هذا األمر يعمل على الخر ج من البرنامج عند ال ص ل لتلك النقطة )بمعنى أدق إذا اشتغل البرنامج بد ن أي أخطاء فإنه سيتم الخر ج من البرنامج قبل التسمية bad_entry إال فإن رسالة الخطأ ستظهر على الرغم من أنه ال ت جد أية أخطاء في هذه ال الة.( جملة On Error Resume Next تق م هذه الجملة بتجاهل الخطأ االستمرار بعد الجملة التي ظهر بها الخطأ. في المثال التالي ت ا ل الجملة ( i ) x = 20 / اجراء عملية غير شرعية هي القسمة على صفر إال أن ضع جملة On Error Resume Next في بداية اإلجرائية ال د ن ظه ر الخطأ التشغيلي. فهنا البرنامج تجا ز الجملة المسببة للخطأ كأنها لم تكن أكمل من بعدها )جملة test" )MsgBox "This is a Sub test() On Error Resume Next Dim i As Integer i = 0 x = 20 / i MsgBox "This is a test" End Sub 118

133 التعامل مع األخطاء جملة Resume Label تق م هذه الجملة بإلغاء الة الخطأ Error condition من ثم االستمرار في البرنامج من عند التسمية Label الم ج دة في الجملة. كمثال على ذلك انظر اإلجرائية التالية ( هي نفس اإلجرائية الخاصة بالجذر التربيعي مع جملة On Error GoTo جملة.)Resume Label في هذه اإلجرائية تم ضع تسمية Label في بداية البرنامج بإسم.try_again في نهاية اإلجرائية تم عرض رسالة الخطأ مع أزرار Yes, No استخدمنا الجملة الشرطية If إلخبار البرنامج بأن يستمر من عند التسمية try_again في ال ضغط المستخدم على زر Yes من خالل السطر البرمجي: If ans = vbyes Then Resume try_again Sub test() Dim i As Double try_again: On Error GoTo bad_entry i = InputBox("Enter a value") x = Sqr(i) MsgBox x Exit Sub bad_entry: msg = "Bad entry. Please make sure that entry is number greater than zero," 119

134 الفصل التاسع msg = msg & " you select a cell, and worksheet is not protected" ans = MsgBox(msg, vbyesno + vbcritical) If ans = vbyes Then Resume try_again End Sub جملة Resume تستخدم هذه الجملة فقط في ال ما إذا كان الك د الذي يعالج األخطاء Error handling ي ت ي على آلية لمعالجة األخطاء فبعد أن تتم معالجة الخطأ يتم استخدام كلمة Resume للرج ع مرة أخري للجملة التي أنتجت الخطأ. فمثال تق م اإلجرائية التالية بطلب أن يق م المستخدم بإدخال قيمة من ثم اجراء عملية معينة على تلك القيمة ارجاع الناتج في الخلية A1 الم ج دة ضمن رقة العمل.test إذا لم تكن رقة العمل test م ج دة ضمن المصنف فإن خطأ تشغيليا س ف يظهر. لتالفي ظه ر هذا الخطأ تم إضافة جزء معالجة األخطاء Error handler إلى الك د ت ت التسمية.error_handler في جزء معالجة األخطاء تم إضافة ك د إلدراج رقة عمل بإسم test من خالل السطر البرمجي: Worksheets.Add(after:=Worksheets(1)).Name = "test" من ثم تم إضافة الكلمة Resume أخرى. للرج ع مرة أخرى للجملة التي أنتجت الخطأ الم ا لة مرة Sub test() Dim i As Integer i = InputBox("Please enter a value") On Error GoTo error_handler 120

135 التعامل مع األخطاء Sheets("test").Range("A1") = i * 150 Exit Sub error_handler: Worksheets.Add(after:=Worksheets(1)).Name = "test" Resume End Sub إزالة الشوائب من البرامج Debugging Techniques الش ائب Bugs ه مصطلح يشير إلى المشاكل التي تظهر في البرامج. بمعني أدق إذا لم يعمل البرنامج كما يجب س اء أكانت النتائج التي يخرجها غير منطقية مثل أن تك ن النتائج الرقمية صغيرة جدا أ كبيرة جدا أ إذا كان البرنامج يخرج رسائل خطأ عند تنفيذ عمليات م ددة أ غيرها من األخطاء يقال أن هذا البرنامج به شائبة.Bug ال قيقة أن معظم البرامج - بما فيها البرامج التي تنتجها شركات كبيرة مثل مايكر س فت ت ت ي على ش ائب. فالش ائب هي من األم ر ال اردة جدا عند كتابة البرامج. في هذا الفصل س ف نتعرف على أهم الطرق التي يمكن استخدامها الكتشاف الش ائب م اضع الخلل في البرامج.Debugging استخدام مربع الحوار Message Box الكتشاف األخطاء من األخطاء الشائعة في البرمجة أن تظهر قيمة متغير ما بشكل غير المت قع كأن تك ن كبيرة جدا أ صغيرة جدا. من الممكن في هذه ال الة استخدام مربعات ال ار الكتشاف مكمن الخطأ. من خالل هذا التكنيك يتم ادراج مربعات ار في أماكن م ددة بداخل الك د لتعرض قيمة المتغير عند كل مكان ب يث تتم متابعة تغير قيمة المتغير أ ال بأ ل مما قد يساعد في اكتشاف النقطة التي بدأ عندها الخلل. كمثال على ذلك انظر البرنامج التالي ه برنامج بسيط ليس له أي فائدة عملية باستثناء ت ضيح الفكرة تق م فكرة البرنامج على أخذ قيمتين من المستخدم a i اذا كانت قيمة a أقل من 1 يتم 121

136 الفصل التاسع ضرب قيمة i في a. هنا استخدمنا مربعي ار لمتابعة قيمة i األ ل قبل ادخال قيمة a إدخالها بعد تنفيذ جملة.If اآلخر بعد Sub test () Dim i As Double i = InputBox("Enter a value of i") MsgBox "Value of i in the beginning is: " & i a = InputBox("Enter a value of a") If a < 1 Then i = i * a MsgBox "Value of i after If statment is: " & i End Sub إلظهار جميع القيم في مربع ا د يمكن استخدام الك د التالي: Sub test() Dim i As Double i = InputBox("Enter a value of i") msg = "Intial value of i is: " & i & vbnewline a = InputBox("Enter a value of a") If a < 1 Then i = i * a msg = msg & "Value of i after If statment is: " & i & vbnewline 122

137 التعامل مع األخطاء MsgBox msg & "Value of a: " & a End Sub Figure 9-2 ال ظ هنا أننا استخدمنا الكلمة المفتا ية vbnewline مع دالة مربع ال ار MsgBox للنز ل بالنص سطرا ا دا. ال تنس أن تق م ب ذف مربعات النص بعد أن يتم تدقيق الك د تص ي ه من األخطاء مثال 2 في المثال التالي يق م الك د بالتكرار عبر أ راق العمل في المصنف إعطاء الصف األ ل في كل رقة الل ن األ مر. من الممكن هنا استخدام مربعات ال ار لمعرفة ال رقة التي يتم العمل عليها اليا. 123

138 الفصل التاسع Sub test() Dim ws As Worksheet For Each ws In Worksheets ws.activate MsgBox "Current sheet is: " & ws.name ws.range("1:1").interior.color = vbred Next ws End Sub Figure

139 التعامل مع األخطاء استخدام جملة Debug.Print في تتبع األخطاء من الممكن استخدام Debug.Print كبديل لمربع ال ار يث أن هذه الجملة تق م بعرض القيم لكن في نافذة التنفيذ الف ري Immediate Window التي يجب اظهارها إذا أردت استخدام هذا التكنيك من خالل استخدام االختصار.Ctrl + G في الك د التالي تم استخدام Debug.Print كبديل عن مربعات ال ار التي استخدمت في المثال السابق. في الشكل 9-4 يظهر لنا كيف تظهر القيم في نافذة التنفيذ الف ري. Sub test() Dim i As Double i = InputBox("Enter a value of i") Debug.Print "Intial value of i is: " & i a = InputBox("Enter a value of a") If a < 1 Then i = i * a Debug.Print "Value of i after If statment is: " & i Debug.Print "Value of a: " & a End Sub 125

140 الفصل التاسع Figure 9-4 استخدام VBA Debugger يقدم االكسيل مجم عة من األد ات الت تساعد في عملية اكتشاف تنقيح األخطاء من خالل ما يعرف ب.VBA Debugger هذه األد ات تقدم لنا طرقا أكثر ق ة في اكتشاف األخطاء من ال سيلتين اللتين تم التطرق لهما سابقا )مربعات ال ار.)Debug.Print تاليا س ف نتطرق لتلك األد ات تباعا. نقاط التوقف Breakpoints تسمح لك نقاط الت قف بإيقاف تنفيذ البرنامج عند نقاط م ددة من ثم النظر عن كثب تدقيق البرنامج ب ثا عن األخطاء. عندما يصل البرنامج إلى نقطة الت قف Breakpoint يدخل البرنامج في ط ر الت قف.Break عندما يك ن البرنامج في هذه ال الة يمكنك اجراء عمليات التدقيق التالية: تنفيذ أ امر VBA في نافذة التنفيذ الف رية )سيتم التطرق لهذا الم ض ع ال قا ( االستمرار بتنفيذ الك د سطرا بسطر يث أن الضغط على زر F8 البرنامج في الة الت قف يسمح لك بتنفيذ سطرا برمجيا ا دا في كل مرة

141 التعامل مع األخطاء معرفة قيم المتغيرات بص رة سهلة سريعة من خالل الت رك بمؤشر الما س ف ق المتغير فيتم عرض قيمة المتغير في نافة صغيرة. ت رير تعديل الك د من ثم االستمرار في التنفيذ. تجا ز تنفيذ بعض األسطر االنتقال مباشرة إلى السطر المطل ب )من الممكن السير في هذه العملية لألمام للخلف( ادراج نقاط التوقف يمكن ادراج نقاط الت قف باستخدام أي من الطرق التالية: من خالل النقر بزر الما س األيمن ف ق السطر الذي نريد ادراج نقطة الت قف عنده ثم اختيار Toggle ثم Breakpoint من خالل النقر بزر الما س األيسر على المنطقة الرمادية الم ج دة على يسار السطر الذي نريد ادراج نقطة الت قف عنده. من خالل ضع مؤشر الما س في السطر المطل ب من ثم الضغط على F9. عند ادراج نقطة ت قف عند سطر ما يتم تل ين ذلك السطر بالل ن األ مر ت ضع نقطة مراء في الهامش الرمادي الم ج د يسار الك د مقابل السطر المطل ب. Figure 9-5 إلزالة نقطة ت قف انقر بزر الما س األيسر ف ق النقطة ال مراء الم ج دة على يسار السطر. 127

142 الفصل التاسع عند تشغيل برنامج ي ت ي على نقطة ت قف فإن تنفيذ البرنامج يت قف قبل السطر الذي ي ت ي على نقطة لت قف يتم تظليل السطر بالل ن األصفر يظهر سهم أصفر على يسار السطر تظهر كلمة Break في أعلى النافذة. Figure 9-6 بعد أن يدخل البرنامج في ضع اإليقاف: ت رك بمؤشر الما س ف ق المتغيرات إلظهار قيمها ال الية. أ اضغط على زر (F5) Continue لالستمرار في تنفيذ البرنامج. لتنفيذ البرنامج سطرا بسطر اضغط على F8. لتجا ز سطر أ أكثر انقر ف ق السهم األصفر بزر الما س األيسر باستمرار الضغط رك السهم للمكان الذي تريد االستمرار من عنده من الممكن استخدام الكلمة المفتا ية Stop إلدراج نقطة ت قف يث ت كتب هذه الجملة قبل السطر الذي تريد ادراج نقطة الت قف عنده مباشرة. نافذة التنفيذ الفوري Immediate Window من خالل نافذة التنفيذ الف ري يمكن تنفيذ أي أمر من أ امر VBA الصال ة. تظهر هذه النافذة عادة في أسفل م رر الك د إذا لم تكن هذه النافذة ظاهرة فيمكن اظهارها من خالل االختصار.Ctrl + G 128

143 التعامل مع األخطاء لتنفيذ أي أمر في نافذة التنفيذ الف ري يجب كتابة كلمة Print قبل األمر )يمكن االستعاضة ب بدال من.)Print على سبيل المثال لعرض قيمة المتغير i نستخدم: Print i )أ ببساطة? i (. انظر الشكل 9-7 Figure 9-7 استخدام نافذة المراقبة Watch Window تتيح لك نافذة المراقبة معرفة قيمة متغير ما أ مجم عة من المتغيرات عند ت قق شرط معين. فمثال في الك د التالي إذا أردت معرفة قيم المتغير x عند ص ل قيمة i ل 500 فيمكنك استخدام نافذة المراقبة من خالل الذهاب إلى قائمة Debug ثم اختيار.Add Watch Sub test() Dim i As Double For i = 1 To 1000 x = i + (i - 1) ^ 2 129

144 الفصل التاسع Next i MsgBox x End Sub يظهر مربع ال ار الخاص بإضافة نافذة مراقبة كما في الشكل 9-8. أدخل الشرط /التعبير المطل ب في خانة Expression ثم دد اإلجرائية المطل ب مراقبتها من خالل الخانة Procedure ال دة البرمجية.Module في الجزء الخاص بن ع المراقبة Watch Type هناك ثالث خيارات: :Watch Expression هذا الخيار يق م بعرض نتيجة التعبير )الجملة البرمجية( الذي تم إدخاله في خانة Expression عند ال ص ل إلى نقطة ت قف Breakpoint :Break when value is True هذا الخيار يق م بإدخال البرنامج في ط ر اإليقاف Breakpoint عند ت قق الشرط المدخل في خانة Expression من ثم يمكنك تف ص قيم المتغيرات من خالل نافذة Immediate Window أ من خالل الت رك بمؤشر الما س ف ق المتغير المطل ب. :Break When Value Changes هذا الخيار يق م بإدخال البرنامج في ط ر اإليقاف Expression عند تغير قيمة المتغير/ نتيجة التعبير المدخل في خانة Breakpoint الشكل 9-8 يظهر لنا كيفية ادراج شاشة مراقبة تق م بإيقاف البرنامج عند ص ل المتغير i للقيمة 500 بينما يق م الشكل 9-9 بعرض شكل نافذة المراقبة البرنامج عند ت قق الشرط المكت ب في خانة.Expression 130

145 التعامل مع األخطاء Figure 9-8 Figure

146 الفصل التاسع استخدام نافذة Locals Window تق م نافذة Locals بعرض قيم جميع المتغيرات ال اقعة ضمن اإلجرائية ال الية ذلك عند دخ ل البرنامج ط ر اإليقاف.Breakpoint يتم ادراج هذه النافذة من خالل الذهاب لقائمة View ثم.Locals Window Figure 9-10 تلميحات لتقليل األخطاء البرمجية ا ل أن تستخدم الخيار Option Explicit في بداية البرامج دائما. استخدام هذا الخيار يقلل من ا تمالية د ث أخطاء بسبب خطأ مطبعي قي كتابة اسم متغير ما. استخدم الكثير من التعليقات. ج د التعليقات يساعدك في فهم الك د عند الرج ع له بعد فترة من كتابة البرنامج. يساعد أيضا من يريد العمل على البرنامج من بعدك. كن ذرا عند استخدام جملة.On Error Resume ج د هذه الجملة يجعل البرنامج يتجا ز الخطأ بد ن أن يعطيك فرصة لمال ظة الخطأ. لذلك عند استخدام هذه الجملة تأكد مما تريده جيدا. نسق الك د بشكل اضح عن طريق م اذاة كل مجم عة من الجمل ذات العالقة مع بعضها البعض )ال ظ كيف تمت م اذاة األ امر في الشكل 9-11(

147 التعامل مع األخطاء 5- أبق على ك دك سهال قدر اإلمكان اسلك د ما أقصر الطرق. Figure

148 الفصل التاسع 134

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

150 الفصل العاشر متى يتم تفعيله عند تنشيط المصنف عند اغالق المصنف عند طباعة المصنف عند فظ المصنف عند إزالة التنشيط عن المصنف عند إضافة رقة عمل جديدة للمصنف عند فتح المصنف عند تنشيط رقة عمل في المصنف عند النقر نقرا مزد جا على ا دى الخاليا في رقة العمل عند النقر بالزر األيمن على ا دى الخاليا في رقة العمل عند اجراء تغيير على ا دى الخاليا عند الغاء التنشيط عن ا دى أ راق العمل عند اجراء تغيير على الت ديد الحدث Activate BeforeClose BeforePrint BeforeSave Deactivate NewSheet Open SheetActivate SheetBeforeDoubleClick SheetBeforeRightClick SheetChange SheetDeactivate SheetSelectionChange متى يتم تفعيله عند تنشيط رقة عمل عند النقر المزد ج على ا دى الخاليا في رقة عمل عند النقر بالزر األيمن على ا دى الخاليا في رقة عمل عند اجراء تغيير على ا دى الخاليا عند إزالة التنشيط عن رقة العمل عند اجراء تعديل على الت ديد الحدث Activate BeforeDoubleClick BeforeRightClick Change Deactivate SelectionChange 136

151 األ داث ما هو معالج-الحدث Event-Handler الك د الذي يتم تنفيذه كرد فعل على دث معين يسمى معالج ال دث.Event-Handler عادة يك ن عبارة عن إجرائية فرعية Sub-Procedure ليس.Function لكتابة Event-Handler اتبع الخط ات التالية: - دد ال دث الذي تريد أن يتم تنفيذ الك د عند ت ققه. - في م رر األك اد VBE اذهب إلى العنصر Object المناسب لل دث انقر عليه نقرا مزد جا. تك ن العناصر ت ت.Microsoft Excel Objects لأل داث الخاصة بالمصنف انقر نقرا مزد جا على ThisWorkbook أما بالنسبة لأل داث الخاصة بأ راق العمل فانقر نقرا مزد جا على رقة العمل المطل بة )مثل Sheet1 مثال ( هكذا. - في نافذة الك د الخاصة بالعنصر اكتب معالج-ال دث المطل ب. في أعلى نافذة الك د هنا قائمتان منسدلتان: Object drop-down list قائمة العنصر o Procedure drop-down list قائمة اإلجرائية o - إذا كنت تريد كتابة Event-Handler للعنصر ThisWorkbook انقر نقرا مزد جا ف ق Object من القائمة المنسدلة Workbook ثم من نافذة الك د اختر ThisWorkbook.drop-down list - بالمثل إذا كنت تريد كتابة Event-Handler ل رقة عمل Sheet انقر نقرا مزد جا ف ق رقة العمل المطل بة ثم من نافذة الك د اختر Worksheet من القائمة المنسدلة Object drop-down list - اختر ال دث المطل ب من قائمة.Procedure drop-down list الشكل 10-1 يعرض بعض األ داث المتا ة ل رقة العمل. - عند اختيار ال دث من القائمة المنسدلة يق م VBE تلقائيا بإدراج إجرائية معالجة ال دث Event- Handler procedure لل دث المطل ب. - أدخل الك د المطل ب في إجرائية معالجة ال دث التي تم فت ها في الخط ة السابقة. مالحظة عند اختيار Workbook من القائمة المنسدلة Object drop-list فإن االكسيل يفترض أن إجرائية ال Event-Handler هي لل دث Open بالتالي يفتح اإلجرائية Workbook_Open هذا جيد اذا 137

152 الفصل العاشر كنت فعال تريد استخدام هذا ال دث. أما إذا لم يكن هذا ال دث المطل ب فعليك ذف إجرائية.Workbook_Open بالمثل اذا اخترت Worksheet من القائمة Object فإن إجرائية معالجة ال دث االفتراضية س ف تك ن Worksheet_SelectionChange فإذا لم تكن ب اجة لها فقم ب ذفها. Figure 10-1 يجب أن ي ضع كل Event-Handler في مكانه الص يح فإذا تم مثال كتابة معالج دث خاص ب رقة العمل في نافذة الك د الخاصة بالمصنف فلن يعمل. 138

153 األ داث أمثلة على استخدام األحداث لتنفيذ أوامر VBA فيما يلي مجم عة من األمثلة على أتمتة تنفيذ االجرائيات من خالل األ داث. س اء أكانت أ داث متعلقة بالمصنف أ ب رقة العمل. أمثلة على أحداث المصنف Workbook Events الحدث Open Workbook في هذا المثال مطل ب كتابة Event-Handler يق م بعرض رسالة تذكيرية كل ي م ثالثاء عند فتح ملف االكسيل الم دد. لكتابة معالج ال دث هذا اتبع الخط ات التالية: 1- انقر نقرا مزد جا ف ق ThisWorkbook الم ج د ضمن مستكشف المشاريع على اليسار لعرض نافذة الك د الخاصة بالمصنف. 2- من نافذة الك د اختر Workbook من القائمة المنسدلة Object drop-down list.procedure drop-down list من القائمة المنسدلة Workbook_Open 3- اكتب الك د التالي في اإلجرائية التي فت ها باسم.Workbook_Open Private Sub Workbook_Open() If Weekday(Now) = 3 Then MsgBox "Today is Tuseday, Don't forget to submit sales report" End If End Sub في النهاية سيظهر الك د كما في الشكل

154 الفصل العاشر Figure 10-2 الحدث Before Close الك د التالي يق م بف ص المصنف قبل اغالقه إذا كانت هناك تعديالت على المصنف بد ن أن يك ن قد تم فظ المصنف فإن معالج ال دث هذا يق م ب فظ المصنف بد ن اظهار أية رسائل. )ذلك يلغي السل ك االفتراضي لالكسيل الذي يق م بعرض رسالة تفيد بأن هناك تعديالت لم يتم فظها هل ترغب بال فظ أم ال ( انقر نقرا مزد جا ف ق ThisWorkbook ثم من نافذة الك د اختر Workbook من قائمة Object Workbook_BeforeClose في اإلجرائية.Procedure من نافذة Workbook_BeforeClose اكتب التالي: Private Sub Workbook_BeforeClose(Cancel As Boolean) If ThisWorkbook.Saved = False Then ThisWorkbook.Save End Sub 140

155 األ داث ThisWorkbook ال ظ أنك من الممكن أن تكب جملة If :Me بالشكل التالي اختصارا يث تم استبدال ب If Me.Saved = False Then Me.Save مثال على الحدث Activate ال دث Activate ي صل عند تنشيط المصنف. تق م اإلجرائية التالية بتكبير نافذة المصنف عرض رسالة ت ت ي على اسم المصنف. هذا األمر مفيد إذا كنت تعمل على عدد كبير من المصنفات المفت ة كنت تخاف أن تختلط عليك األم ر فتجري تعديال على المصنف الخطأ. الحدث Deactivate Private Sub Workbook_Activate() ActiveWindow.WindowState = xlmaximized MsgBox Me.Name End Sub ال دث Deactivate ي صل عند الغاء التنشيط عن المصنف. إجرائية معالجة ال دث التالية هي مثال على استخدام ال دث.Deactivate تق م هذه االجرائية بنسخ النطاق الم دد ضعه في ال افظة ذلك عند الغاء التنشيط عن المصنف. هذا األمر مفيد إذا كان لديك مصنف تريد أن تنسخ مجم عة من النطاقات من أ راق العمل بداخله إلى مصنفات أخرى يث أن تلك اإلجرائية تسهل األمر عليك فبدال من ت ديد النطاق ثم اختيار األمر نسخ Copy فيكفي اختيار النطاق فقط ثم الذهاب للمصنف الهدف اجراء عملية اللصق. Private Sub Workbook_Deactivate() ThisWorkbook.Windows(1).RangeSelection.Copy End Sub 141

156 الفصل العاشر مثال على الحدث New Sheet اإلجرائية التالية تق م بنسخ تر يسة رقة العمل الم ج دة في رقة العمل A1:I1 إلى أي رقة عمل جديدة. Sheet1 ضمن النطاق Private Sub Workbook_NewSheet(ByVal Sh As Object) Sheets("sheet1").Range("A1:I1").Copy Sh.Paste End Sub مثال على الحدث Before Save اإلجرائية التالية تق م بتسجيل قت تاريخ آخر مرة تم فيها فظ المصنف في الخلية A1 العمل.Sheet1 من رقة Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _ Cancel As Boolean) Worksheets("Sheet1").Range("A1") = Format(Now, _ "dd-mm-yyyy hh:mm:ss") End Sub 142

157 األ داث بعض األمثلة على أحداث أوراق العمل Worksheets Events الحدث Activate ي ص هذا ال دث عند تنشيط رقة العمل. كمثال تق م إجرائية معالجة ال دث التالية بتنشيط الخلية A1 ل رقة العمل الم ددة في كل مرة يتم فيها تنشيط رقة العمل. لكتابة هذه اإلجرائية )أ أي إجرائية أخري تتعامل مع أ داث رقة العمل( اتبع اإلجراءات التالية: 1- انقر نقرا مزد جا على رقة العمل المطل بة من مستكشف المشاريع 2- من نافذة الك د اختر Worksheet من القائمة المنسدلة Object drop-down list.procedure drop-down list من Worksheet_Activate 3- أدخل الك د كما باألسفل. Private Sub Worksheet_Activate() Range("A1").Activate End Sub الحدث Deactivate ي صل هذا ال دث عند الغاء التنشيط عن رقة العمل. كمثال يق م الك د باألسفل بف ص م ت يات الخلية A1 عند الغاء التنشيط عن رقة العمل Sheet1 فإذا كانت فارغة يعرض رسالة خطأ تذكر المستخدم بأن يدخل قيمة في تلك الخلية يمنع المستخدم من االنتقال ل رقة عمل أخرى قبل ادخال قيمة في الخلية A1 في ال رقة.Sheet1 Private Sub Worksheet_Deactivate() If Len(Me.Range("A1").Value) = 0 Then MsgBox "Reminder!! Please enter a value in A1 " 143

158 الفصل العاشر Sheets("sheet1").Activate End If End Sub الحدث Select Change ي صل ال دث Select_Change عند تغير الخاليا الم ددة. كمثال على هذا ال دث تق م اإلجرائية باألسفل بتل ين صف عم د الخلية النشطة لتسهيل عملية قراءة البيانات. يك ن نتيجة تنفيذ هذه اإلجرائية كما في الشكل Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlnone With ActiveCell.EntireRow.Interior.Color = RGB(248, 203, 173).EntireColumn.Interior.Color = RGB(180, 198, 231) End With End Sub تبدأ اإلجرائية بإزالة الل ن عن كافة خاليا رقة العمل من خالل السطر: Cells.Interior.ColorIndex = xlnone ثم تق م بتل ين صف عم د الخلية النشطة من خالل كتلة األ امر :Command Block 144

159 األ داث With ActiveCell.EntireRow.Interior.Color = RGB(248, 203, 173).EntireColumn.Interior.Color = RGB(180, 198, 231) End With Figure

160 الفصل العاشر الحدث Worksheet Calculate ي صل هذا ال دث عند اجراء ا تساب ل رقة العمل Worksheet Calulate س اء أكان اال تساب تلقائيا أ يد يا. في الك د باألسفل يتم عمل ا ت اء تلقائي لألعمدة A:F في كل مرة يتم فيها إعادة ا تساب رقة العمل. الحدث Worksheet Change Private Sub Worksheet_Calculate() Columns("A:F").AutoFit End Sub ي صل هذا ال دث عند د ث تغيير على خاليا رقة العمل. كمثال على استخدام هذا ال دث تق م اإلجرائية باألسفل بإدراج قت تاريخ تعديل أي خلية من خاليا العم د B ذلك في الخلية المجا رة )التي تقع في العم د C( Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 2 Then Exit Sub Target.Offset(0, 1).Value = Format(Now, "MM / DD / YYYY hh:mm") End Sub االنتقال إلى الكود الخاص بورقة عمل من خالل اكسيل لالنتقال بشكل مباشر إلى الك د الخاص ب رقة عمل معينة من خالل االكسيل ( ليس الما س األيمن ف ق رقة العمل ثم اختر View Code كما في الشكل 10-4 )VBE انقر بزر 146

161 األ داث Figure

162 الفص ال ادي عشر 148

163 التفاعل مع المستخدم الفصل الحادي عشر 11. التفاعل مع المستخدم من خالل مربعات الحوار في هذا الفصل سيتم التعرض ل االت مختلفة لكل من دالة MsgBox التي تق م بعرض البيانات ضمن مربع ار مع إمكانية أخذ تغذية راجعة من المستخدم دالة InputBox التي تستخدم إلدخال البيانات من خالل مربع ار. إضافة إلى ذلك فسيتم التطرق لدالة Application.InputBox التي ت ستخدم إلدخال أشياء مثل المعادالت أ مراجع النطاقات. الدالة MsgBox تق م الدالة MsgBox بعرض مربع ار بسيط يمكن استخدامه لعرض معل مات للمستخدم أ أخذ تغذية راجعة منه مثل أن يضغط المستخدم على زر م افق أ الغاء األمر. تأخذ هذه الدالة الشكل التالي: MsgBox(prompt[, buttons][, title]) يث أن: - :Prompt عبارة عن نص الرسالة الذي س ف يظهر على مربع ال ار. ه معامل اجباري. - :Buttons هذا المعامل ي ضح ن ع األزرار التي ترغب بإظهارها على مربع ال ار باإلضافة إلى أنه يمكن استخدامه أيضا لعرض ا دى األيق نات التي قد تساعد في ت ضيح الهدف من مربع ال ار )مثل أيق نة الت ذير أ اإلعالم(. 149

164 الفص ال ادي عشر :Title عن ان مربع ال ار. - Figure 11-1 عرض مربع حوار بسيط المثال التالي يق م بعرض مربع ار بسيط يق م بعرض رسالة تطلب من المستخدم أن يضغط على زر OK للبدء بطباعة نطاق البيانات المسمى.data ال ظ أن سير البرنامج يت قف ل ين االستجابة لمربع ال ار. Sub test() MsgBox "Press OK to print data..." Range("data").PrintOut End Sub 150

165 التفاعل مع المستخدم Figure 11-2 أخذ استجابة من مربع حوار إذا كان مربع ال ار ي ت ي على ما ه اكثر من زر OK فيمكنك أن ت دد مسار البرنامج بناء على الزر الذي قام المستخدم بضغطه. تق م اإلجرائية التالية بعرض مربع ار مع زري Cancel OK ب يث إذا تم الضغط على OK يتم طباعة البيانات أما إذا تم الضغط على Cancel فيتم الغاء العملية يتم عرض رسالة تفيد باإللغاء. Sub test_msgbox() Dim Ans As Integer Ans = MsgBox ("Do you want to print data", vbyesno) Select Case Ans Case vbyes Sheets("sheet1").Range("data").PrintOut Case vbno MsgBox "Printing canceled" End Select End Sub 151

166 الفص ال ادي عشر ال ظ أننا في هذا المثال استخدمنا المعامل الثاني ( ه اختياري( لدالة MsgBox الذي من خالله تم ت ديد ن ع األزرار التي نرغب بإظهارها على مربع ال ار )في هذا لمثال زري.)No Yes ثم استخدمنا جملة Select لتنفيذ األ امر بناء على الزر الذي س ف يتم الضغط عليه. ال ظ هنا أننا استخدمنا متغير )Ans( لتخزين نتيجة الضغط على أ د األزرار فيه قبل استخدام هذا المتغير في جملة.Select من الممكن عدم استخدام المتغير Ans كما في المثال التالي: Sub test_msgbox() If MsgBox("Do you want to print data", vbyesno)= vbyes Then...[code if Yes is clicked]... Else...[code if Yes is not clicked]... End If End Sub Figure 11-3 في الجد ل التالي القائمة الكاملة للخيارات التي يمكن استخدامها في المعامل الثاني لدالة MsgBox.)Buttons( يمكنك استخدام الكلمة مثل vbokcancel أ القيمة الرقمية المكافئة كما في الجد ل. 152

167 التفاعل مع المستخدم ماذا تفعل عرض زر OK فقط عرض زري Cancle OK عرض األزرار Abort, Retry, and Ignore عرض األزرار Yes, NO, and Cancle عرض زري NO Yes عرض زري Retry, Cancle عرض أيق نة الخطر Critical عرض أيق نة االستفهام Query عرض أيق نة الت ذير Warning عرض أيق نة المعل مات Information الزر األ ل ه الزر االفتراضي الزر الثاني ه الزر االفتراضي الزر الثالث ه الزر االفتراضي الزر الرابع ه الزر االفتراضي القيمة الكلمة vbokonly vbokcancel vbabortretryignore vbyesnocancel vbyesno vbretrycancel vbcritical vbquestion vbexclamation vbinformation vbdefaultbutton1 vbdefaultbutton2 vbdefaultbutton3 vbdefaultbutton4 الستخدام أكثر من قيمة للمعامل مثل أن تعرض األزرار OK, Cancel Information يمكنك استخدام إشارة +: مع عالمة المعل مات vbyesno + Information في المثال السابق إذا تم تغيير الجملة Ans = MsgBox("Do you want to print data", vbyesno) إلى Ans = MsgBox("Do you want to print data", vbyesno + vbinformation) فسيظهر لنا مربع ال ار كما في الشكل ال ظ عالمة المعل مات على اليسار. 153

168 الفص ال ادي عشر Figure 11-4 مربع االدخال InputBox دالة InputBox هي من الد ال المفيدة التي يمكن استخدامها الستقبال ادخال معين من قبل المستخدم. تأخذ الدالة الشكل العام التالي: InputBox(prompt[, title][, default]) يث أن: - :Prompt هي الرسالة التي س ف تظهر على مربع ال ار. عادة ما ت ت ي على ت جيهات للمستخدم ل طبيعة االدخال المت قع. هي قيمة اجبارية - :Title عن ان مربع ال ار. هي قيمة اختيارية. - :Default النص االفتراضي لإلدخال. هي قيمة اختيارية. مثال على دالة InputBox تستخدم اإلجرائية التالية دالة InputBox المستخدم من خالل مربع.MsgBox ألخذ االسم من المستخدم ثم تق م بعرض جملة تر يبية باسم Sub test() Dim name As String 154

169 التفاعل مع المستخدم name = InputBox("Please enter your name...", "Name") MsgBox "Helo " & name End Sub تم تعريف متغير من ن ع String باسم name لنا مربع االدخال كما بالشكل 11-5 لتخزين قيمة االدخال فيه. عند تنفيذ اإلجرائية سيظهر Figure 11-5 إذا أدخلنا االسم Mohammed فإن البرنامج سيق م بعرض الرسالة التر يبية كما باألسفل Figure

170 الفص ال ادي عشر الدالة Application.InputBox method ي جد لعنصر البرنامج Application object ظيفة Method تسمى InputBox )بخالف الدالة )InputBox هي تظهر مربع ار شبيه بمربع ال ار الخاص بالدالة InputBox إال أنها أكثر مر نة منها يث أنه من الممكن استخدام هذه ال Method إلدخال أشياء مثل المصف فات أ المعادالت إال أن أكثر فائدة لهذه ال Method ه أنه يمكن استخدامها لت ديد نطاق من البيانات. تأخذ هذه ال Method الشكل العام التالي: Application. InputBox (_Prompt_, _Title_, _Default_, _Left_, _Top_, _HelpFile_, _HelpContextID_, _Type_) الجد ل التالي ي ضح معامالت الدالة: االسم Prompt Title Default Left Top HelpFile HelpContextID Type مطلوب/ اختياري مطل ب اختياري اختياري اختياري اختياري اختياري اختياري اختياري الوصف الرسالة التي سوف تعرض على مربع الحوار عنوان مربع الحوار القيمة االفتراضية موقع مربع الحوار بالنسبة لشاشة االكسيل موقع مربع الحوار بالنسبة لشاشة االكسيل اسم ملف المساعدة الرقم المرجعي للعنوان الذي تريد مساعدة بالنسبة له. نوع البيانات المدخلة. إذا لم يكن هذا الخيار موجودا فإن نوع البيانات االفتراضي هو نص Text 156

171 التفاعل مع المستخدم الجد ل التالي ي ضح القيم التي يمكن استخدامها مع المعامل :Type ما تعنيه صيغة Formula رقم نص قيمة منطقية True or False مرجع خاليا )كعنصر نطاق )Range object قيمة خطأ )مثل )N/A# مصف فة القيمة مثال يق م البرنامج باألسفل باستخدام Application.InputBox method بعرض مربع ار يق م المستخدم من خالله بت ديد خلية من ثم يتم ف ص قيمة الخلية فإذا كانت أكبر من صفر يتم تل ين الخلية بالل ن األخضر. ال ظ هنا أننا استخدمنا الكلمة المفتا ية Set لتعيين قيمة للمتغير mycell يث أن هذا المتغير يتم استخدامه هنا لي ت ي على عنصر نطاق Range )من المعر ف أنه لتعيين قيمة لمتغير من ن ع نطاق يجب استخدام الكلمة المفتا ية.Set راجع الفصل الرابع ) Sub test_cell() Worksheets("Sheet1").Activate Set mycell = Application.InputBox( prompt:="select a cell", Type:=8) If mycell.value > 0 Then mycell.interior.color = vbgreen End Sub 157

172 الفص ال ادي عشر 158

173 النماذج UserForms الفصل الثاني عشر النماذج 12. تعد النماذج من ال سائل الجيدة إلدخال البيانات عرضها. يث أنك من خاللها تستطيع الت كم بكيفية ادخال البيانات من يث ترتيب ادخال البيانات أ اختيار ال سيلة المناسبة لكل ن ع من البيانات المطل بة أ اجراء عملية الت قق من االدخال للبيانات المدخلة غيرها من األشياء. يمكنك أيضا الت كم بكيفية عرض البيانات بالشكل الذي يالئم طبيعة البيانات المعر ضة مما يعطيك مر نة عالية جدا في التعامل مع البيانات. يتم ادراج النماذج مع عناصر الت كم الخاصة بها الك د المرتبط بالنم ذج العناصر عليه من خالل م رر األك اد.VBE انشاء نموذج المستخدم الخط ة األ لى في عملية انشاء نم ذج المستخدم UserForm هي ادراج نم ذج من خالل م رر األك اد من خالل النقر بزر الما س األيمن على اسم المصنف الذي نريد انشاء النم ذج بداخله ثم اختيار Insert UserForm أ من خالل ت ديد اسم المصنف ثم الضغط على زر Insert UserForm على شريط األد ات. 159

174 الفصل الثاني عشر Figure 12-1 س ف يتم ادراج نم ذج Form كما في الشكل بعد أن يتم ادراج النم ذج من الممكن أن تت كم بخصائصه من خالل الجزء الخاص بخصائص النم ذج UserForm properties فمثال يمكن تغيير ل ن الخلفية من خالل تعديل الخاصية BackColor يمكن تغيير عن ان النم ذج من خالل الخاصية.Caption يتم تعديل الخصائص من خالل الضغط على ال قل الم ج د على يمين اسم الخاصية فيتم فتح قائمة منسدلة )في أغلب األ يان( نختار منها االعداد المطل ب إذا لم تكن هناك قائمة منسدلة )كما في خاصية اسم النم ذج( نكتب قيمة االعداد المطل ب. اذا لم تكن نافذة الخصائص ظاهر فيمكن اظهارها من خالل الذهاب إلى قائمة View ثم اختيار.Properties Window 160

175 النماذج Figure 12-3 Figure

176 الفصل الثاني عشر إضافة عناصر تحكم للنموذج عنصر الت كم Control ه عبارة عن عنصر ي ضع على النم ذج ( مثل األزرار أ مربع النص أ الق ائم المنسدلة( يتم من خالله ادخال أ عرض البيانات. يتم ادراج عناصر الت كم من خالل صند ق األد ات Toolbox الذي يظهر عادة بمجرد ادراج النم ذج. إذا لم يكن صند ق األد ات ظاهرا فيمكن ادراجه من خالل الذهاب إلى قائمة View ثم اختيار.Toolbox إلضافة عنصر ت كم على النم ذج اختر العنصر المطل ب ثم أدرجه في المكان المطل ب على النم ذج. يمكنك بعد ادراج عنصر الت كم الت كم ب جمه أ مكانه باستخدام مهارات ال اس ب األساسية مثل الس ب اإلفالت أ غيرها. Figure

177 النماذج الجد ل التالي ي ضح عناصر الت كم الشائعة ظيفة كل منها عنصر الت كم التسمية الت ضي ية Label مربع النص TextBox ComboBox القائمة المنسدلة ListBox مربع االختيار CheckBox زر االختيار OptionButton التبديل زر ToggleButton االطار Frame األ امر زر CommandButton شريط األلسنة TabStrip شريط التمرير ScrollBar ص رة Image عنصر RefEdit ظيفته الظهار نص. الدخال أ عرض نص. يعرض مجم عة من القيم على شكل قائمة منسدلة لالختيار من بينها. يمكن إدخال قيمة جديدة غير م ج دة من ضمن القيم التي تعرضها القائمة المنسدلة. تعرض مجم عة من القيم على شكل قائمة منسدلة لالختيار من بينها. يستخدم لالختيار ما بين on/off أ نعم/ال يستخدم ضمن مجم عات من زرين أ أكثر يث يسمح للمستخدم باختيار زر ا د فقط في المرة ال ا دة. زر تشغيل/إيقاف ا ية لعناصر أخرى زر قابل للضغط يعرض مجم عة من ألسنة التب يب التي يمكن التنقل ما بينها شريط قابل للتمرير لعرض الص ر يسمح للمستخدم بإدخال نطاق Range 163

178 الفصل الثاني عشر عنصر التحكم زر األوامر Command Button نستطيع من خالل هذا العنصر تنفيذ مجم عة من األ امر عند الضغط عليه. إلدراج زر أمر اختر زر األمر من صند ق األد ات ثم أدرجه في المكان المناسب على النم ذج.Form عدل ال جم بالشكل المناسب ثم غير أي م اصفات أخرى للزر على سبيل المثال من األم ر الجيدة أن تعطي كل زر اسم خاص به Name عن ان Caption ذلك من خالل تعديل خصائص الزر من جزء الخصائص.Properties part بعد ذلك يمكنك إضافة الك د المطل ب للزر. كمثال على استخدام أزرار األ امر افترض أنك تريد انشاء برنامج بسيط يق م بإجراء عملية طباعة ل رقة العمل مع إعطاء المستخدم الخيار للطباعة الط لية أ العرضية. ابدأ بإدراج نم ذج فارغ ثم أضف له ثالث أزرار كما في الشكل من جزء الخصائص الخاص بكل زر عدل خصائص األزرار كالتالي )ال ظ أنه من األم ر الم صى بها أن تبدأ أسماء أزرار األ امر بالبادئة cmd_ لكن هذا األمر ليس ملزما يمكنك إعطاء أي اسم للزر بد ن مشاكل(: اسم الزر Name عنوان الزر Caption cmd_portrait Portrait cmd_landscape Landscape cmd_cancel Cancel Figure

179 النماذج اظهار النموذج Show UserForm إلظهار نم ذج ما يمكنك كتابة جملة برمجية تستخدم أمر Show مع اسم النم ذج المطل ب. فمثال إذا أردنا أن نكتب إجرائية تق م بعرض النم ذج السابق )على أساس أن اسم النم ذج )UserForm1 فمن الممكن استخدام الك د التالي: Sub print_from() UserForm1.Show End Sub عند تنفيذ هذه اإلجرائية تق م بعرض النم ذج كما في الشكل Figure 12-6 تى هذه الل ظة ال يق م النم ذج بإجراء أي عملية فعند الضغط على أي من األزرار عليه ال ي دث شيء يث أنه لم يتم بعد كتابة أي ك د خاص بالنم ذج أ العناصر الم ج دة عليه. في الفقرات التالية س ف نتعرف على كيفية إضافة األك اد الخاصة بالنماذج. 165

180 الفصل الثاني عشر كتابة األكواد الخاصة بالنماذج UserForms Codes لعرض الك د الخاص بنم ذج ما انقر بزر الما س األيمن ف ق اسم النم ذج في مستكشف المشاريع ثم اختر.View Code يمكنك أيضا أن تنقر نقرا مزد جا ف ق النم ذج لعرض الك د الخاص به. بالمثل لعرض الك د الخاص بأ د العناصر على النم ذج انقر نقرا مزد جا عليه أ انقر عليه بزر الما س األيمن ثم اختر.View Code Figure 12-7 اغالق النموذج Unloading a Form إلغالق نم ذج ما استخدم الك د Cancel عن طريق التالي:.Unload me أنسب مكان ل ضع هذا الك د ه ارفاقه مع زر Cancel )أ انقر بالزر األيمن اختر.)View Code س ف يظهر Private Sub cmd_cancel_click() End Sub انقر نقرا مزد جا ف ق زر لك الك د التالي: - 166

181 النماذج أدخل السطر Unload me بداخل اإلجرائية أعاله كما يلي: Private Sub cmd_cancel_click() Unload Me End Sub - اآلن عند الضغط على زر Cancel فسيتم اغالق النم ذج م بياناته من ذاكرة ال اس ب. إخفاء النموذج Hiding a form تق م ال Hide method بجعل النم ذج غير مرئي. مع اال تفاظ بالبيانات الم ج دة فيه. يمكن في أي ل ظة اظهار النم ذج المخفي من خالل.Show method إخفاء النم ذج قد يك ن مفيدا في بعض ال االت أ د األمثلة على ذلك ه عندما تريد أن تظهر نم ذجا فرعيا من آخر أساسي فيمكنك أن تخفي النم ذج األساسي كي تجعل المستخدم يركز على النم ذج الفرعي بعد ادخال بيانات الفرعي يتم اظهار النم ذج األساسي مرة أخرى. إلخفاء النم ذج UserForm1 مثال قم بإدخال الك د UserForm1.Hide في المكان المناسب ( سب تسلسل سير البرنامج(. تذكر!! الفرق بين Hide Unload ه أن VBA يق م في ال الة األ لى بإغالق النم ذج م بياناته من الذاكرة بينما في ال الة الثانية يق م بإخفاء النم ذج مع اإلبقاء على البيانات بداخله كما هي. كتابة األكواد الخاصة بأزرار األوامر لكتابة الك د الخاص بزر األمر Portrait بالنقر على الزر كما يلي: انقر نقرا مزد جا ف قه فتظهر لك إجرائية ال دث الخاصة Private Sub cmdportrait_click() End Sub 167

182 الفصل الثاني عشر أدخل الك د التالي بداخل اإلجرائية كما يلي: Private Sub cmdportrait_click() Unload Me With ActiveSheet.PageSetup.Orientation = xlportrait.printpreview End With End Sub ال ظ أننا في هذه اإلجرائية استخدمنا With..End With لتبسيط الك د منع التكرار. يق م الك د أ ال بتغيير اتجاه ال رقة إلى االتجاه الط لي Portrait من خالل الك د:.PageSetup.Orientation = xlportrait ثم عرض معاينة قبل الطباعة ل رقة العمل من خالل السطر البرمجي:.PrintPreview ال ظ أننا في بداية اإلجرائية أدخلنا السطر البرمجي Unload Me إلغالق النم ذج بعد الضغط على زر.Portrait بد ن هذا السطر س ف يبقى النم ذج ظاهرا لن يك ن بإمكانك اغالقه يث أن االكسيل س ف يك ن ينتظر منك أن تتعامل مع نافذة المعاينة قبل الطباعة في نفس ال قت لن يمكنك التعامل مع نافذة معاينة قبل الطباعة قبل اغالق النم ذج بذلك تك ن قد دخلت بداخل لقة مفرغة. لذلك يجب ادخال Unload Me في بداية اإلجرائية. 168

183 النماذج لكتابة الك د الخاص بزر األمر Landscape انقر عليه نقرا مزد جا ثم أدخل الك د التالي: Private Sub cmd_portrait_click() Unload Me With ActiveSheet.PageSetup.Orientation = xlportrait.printpreview End With End Sub أصبح لدينا اآلن الك د جاهز لجميع العناصر. لتشغيل البرنامج يمكن استدعاء اإلجرائية print_form التي تم انشائها سابقا هي كالتالي: Sub print_from() UserForm1.Show End Sub من الممكن إضافة اختصار للبرنامج إلى شريط األد ات Ribbon من خالل تخصيص الشريط كما يلي: 1- انقر بزر الما س األيمن ف ق الشريط Ribbon ثم اختر.Customize the ribbon 2- أضف مجم عة جديدة أل د ألسنة التب يب الم ج دة عن طريق اختيار لسان التب يب المطل ب ثم الضغط على زر.New Group مثال إذا أردت إضافة مجم عة جديدة لتب يب "الصف ة الرئيسية "Home ف دد Home ثم انقر على.New Group بعد اإلضافة يمكن اعادة تسمية المجم عة عن طريق ت ديدها ثم اختيار.Rename 169

184 الفصل الثاني عشر أضف البرنامج المطل ب للشريط عن طريق اختيار Macros من القائمة المنسدلة Choose commands from ثم ت ديد اسم اإلجرائية المطل بة اضافتها للمجم عة كما في الشكل بالطبع يمكنك إعادة تسمية األيق نة على شريط األد ات اعطائها شكل مخصص. -3 للمزيد ل تخصيص شريط األد ات راجع الفصل األ ل من كتاب "اكسيل 2019 الدليل السهل" Figure

185 النماذج Figure 12-9 عنصر التحكم "التسمية التوضيحية" Label من الممكن استخدام عنصر التسمية الت ضي ية إلدراج نص س اء بشكل ثابت أ متغير. عادة ما يتم استخدام التسمية الت ضي ية مع عناصر الت كم األخرى مثل مربع النص لت ضيح طبيعة البيانات الم ج دة بذلك العنصر. إلدراج تسمية ت ضي ية نختار Label من صند ق األد ات Toolbox ثم ندرج التسمية في المكان المطل ب بالطبع يمكن الت كم ب جم التسمية من خالل الس ب االفالت. من الممكن عرض قيمة ثابتة في التسمية الت ضي ية من خالل كتابة تلك القيمة في بند Caption الم ج د ضمن خصائص التسمية الت ضي ية. أ عرض قيمة متغيرة من خالل كتابة ك د برمجي كما في المثال التالي. مثال: في هذا المثال س ف نعدل على المثال السابق ب يث يتم اظهار اسم رقة العمل التي س ف طباعتها مع المصنف الذي ي ت يها في أعلى النم ذج كما في الشكل Figure

186 الفصل الثاني عشر Figure لعمل ذلك نق م بإدراج عنصر Label إلى النم ذج نعدل ن ع الخط في التسمية الت ضي ية من خالل تعديل ن ع الخط من خصائص التسمية الت ضي ية كما في الشكل Figure

187 النماذج لجعل التسمية الت ضي ية تظهر اسم المصنف ال الي رقة العمل النشطة عند تشغيل النم ذج نظهر الك د الخاص بالنم ذج عن طريق النقر بزر الما س األيمن ف ق أي مكان على النم ذج ثم اختيار View Code ثم من القائمة المنسدلة الخاصة باأل داث نختار ال دث initialize ثم ندخل الك د التالي في إجرائية معالج ال دث Event-Handler procedure )انظر الشكل 12-13( Private Sub UserForm_Initialize() Label1.Caption = ActiveWorkbook.Name & " " & ActiveSheet.Name End Sub اآلن بمجرد تشغيل النم ذج س ف يتم عرض اسم المصنف ال الي رقة العمل النشطة في التسمية الت ضي ية.Label1 Figure

188 الفصل الثاني عشر أزرار االختيار Option Buttons تك ن أزرار االختيار مفيدة عندما ي تاج المستخدم إلى اختيار قيمة ضمن عدد صغير من القيم. عادة ما تستخدم أزرار االختيار ضمن مجم عات تتك ن من زرين على األقل عادة ما ت ضع المجم عة بداخل إطار.Frame يستطيع المستخدم اختيار قيمة ا دة فقط من المجم عة. في الشكل تظهر لنا مجم عتين من األزرار ضمن اطارين مختلفين يستطيع المستخدم أن يختار عنصر ا د فقط من كل مجم عة. Figure لت ديد المجم عة التي ينتمي إليها أ د أزرار االختيار يمكنك استخدام ا دى الطريقتين اآلتيتين: - أضف إطار Frame للنم ذج من ثم ضع أزرار االختيار التي تنتمي لنفس المجم عة لذلك اإلطار. هذه الطريقة هي المستخدمة في النم ذج الظاهر في الشكل أعط لجميع أزرار المجم عة نفس اسم المجم عة Group Name من خالل الخاصية.GroupName من الممكن أن ت دد جميع أزرار االختيار التي تريد ضمها لنفس المجم عة من ثم تغير اسم المجم عة لجميع األزرار مرة ا دة من خالل تغيير GroupName كما في الشكل

189 النماذج Figure أهم الخصائص الخاصة بزر االختيار Option Button :GroupName من خالل هذه الخاصية يمكن تعيين اسم مجم عة لزر األمر. :ControlSource خلية رقة العمل المرتبطة بزر االختيار. عند اختيار الزر س ف تك ن قيمة هذه الخلية True عند عدم االختيار س ف تك ن.False :Value عند اختيار الزر ستأخذ هذه الخاصية القيمة True عند عدم االختيار ستأخذ القيمة.False

190 الفصل الثاني عشر مثال في هذا المثال المطل ب التعديل على نم ذج الطباعة الذي تعرضنا له مسبقا ب يث نستخدم أزرار االختيار لت ديد هل الطباعة ط لية أم عرضية بدال من أزرار األ امر. أ ال قم بإدراج نم ذج فارغ ثم أدرج إطار Frame ثم أدرج زري اختيار OptionButtons بداخل االطار. غير خصائص الزرين ب يث يأخذ زر الطباعة الط لية االسم optportrait :Name العن ان Portrait :Caption زر الطباعة العرضية االسم optlandscape العن ان.Landscape أدرج زري أمر.Print Cancel بالنسبة لزر Cancel فأعطه نفس الك د الم ج د في المثال السابق. بالنسبة للزر Print فأعطه الك د التالي: Private Sub cmdprint_click() Unload Me If optportrait.value = True Then With ActiveSheet.PageSetup.Orientation = xlportrait.printpreview End With ElseIf optlandscape.value = True Then With ActiveSheet.PageSetup.Orientation = xlportrait.printpreview End With 176

191 النماذج Else MsgBox "Please choose Portrait or Landscape" frmprint.show End If End Sub Figure يبدأ الك د بف ص قيمة زر االختيار optportrait فإذا كانت قيمته True )أي أنه تم اختيار هذا الخيار( فسيتم تنفيذ الك د الخاص بالطباعة الط لية كما رد سابقا. أما إذا كانت قيمة االختيار optlandscape هي True فسيتم تنفيذ ك د الطباعة العرضية. أما إذا لم يتم اختيار أي من الخيارين فس ف تظهر رسالة تنبيه للمستخدم تطلب منه اختيار أ د الخيارين من ثم يتم اظهار النم ذج مرة أخرى من خالل السطر البرمجي ( frmprint.show يث أن النم ذج تم اخفاؤه في السطر األ ل من البرنامج للسبب الذي تم ذكره في المثال في الصف ة (

192 الفصل الثاني عشر من الممكن أن تجعل البرنامج يق م بت ديد أ د األزرار بشكل افتراضي Default selection من خالل تعديل الك د الخاص ببدء النم ذج سب الخط ات التالية: - اعرض الك د الخاص بالنم ذج عن طريق النقر بزر الما س األيمن ف ق أي مكان فارغ على النم ذج اختيار.View Code - من القائمة المنسدلة الخاصة باأل داث - من القائمة المنسدلة الخاصة باأل داث )أعلى يمين النافذة( اختر ال دث Initialize ثم أدرج الك د التالية في إجرائية معالجة ال دث :UserForm_Initializ() optportrait.value = True Figure

193 النماذج صندوق االختيار Check Box On/Off هكذا. True/False أ يك ن مربع االختيار مفيدا عندما يك ن لديك االختيار بين نعم ال أ فيما يلي أهم الخصائص الخاصة بمربع االختيار: :ControlSource خلية رقة العمل المرتبطة بصند ق االختيار. عند اختيار الزر س ف - تك ن قيمة هذه الخلية True عند عدم االختيار س ف تك ن.False :Value عند اختيار الزر ستأخذ هذه الخاصية القيمة True عند عدم االختيار ستأخذ القيمة -.False مثال في النم ذج الظاهر في الشكل تم إضافة زر صند ق اختيار لنم ذج الطباعة الذي رد في المثال السابق ب يث ان اختيار هذا الزر يق م بعرض خط ط الشبكة Gridlines عند الطباعة. Figure لعمل هذا النم ذج قم بإدراج صند ق اختبار للنم ذج الذي استخدمناه في المثال السابق )الخاص بأزرار االختيار( ثم قم بتعديل خصائص صند ق االختيار كالتالي: 179

194 الفصل الثاني عشر - Name :chkgrid - Caption :Print Gridlines بعد أن يتم ادراج صند ق االختيار تغيير خصائصه كما سبق قم بالتعديل على الك د المرتبط بزر األمر Print عن طريق النقر المزد ج عليه من ثم ادراج جملة If التالية في بداية إجرائية معالجة ال دث كما ه ظاهر في الشكل : If chkgrid.value = True Then Else ActiveSheet.PageSetup.PrintGridlines = True ActiveSheet.PageSetup.PrintGridlines = False End If تق م هذه الجملة بف ص ما إذا كانت قيمة صند ق االختيار chkgrid هي True فإذا كانت كذلك تنفذ السطر التالي: ActiveSheet.PageSetup.PrintGridlines = True الذي يق م بعرض خط ط الشبكة عند الطباعة إال س ف يتم تنفيذ السطر: ActiveSheet.PageSetup.PrintGridlines = False بالتالي لن يتم عرض خط ط الشبكة عند الطباعة. 180

195 النماذج Figure القائمة List Box يتم من خالل عنصر الت كم هذا عرض مجم عة من العناصر ليتم اختيار عنصر أ أكثر من قبل المستخدم. ي ظهر لنا الشكل مثاال لقائمة ListBox من الممكن تهيئة القائمة للسماح للمستخدم باختيار عنصر ا د من القائمة فقط أ السماح باالختيار المتعدد. 181

196 الفصل الثاني عشر Figure أهم خصائص عنصر التحكم List Box - :ControlSource من الممكن استخدام هذه الخاصية لت ديد إ دى خاليا رقة العمل ب يث يتم تخزين القيمة الم ددة من القائمة بداخلها. - :ListStyle من خالل هذه الخاصية يتم الت كم بمظهر القائمة. - :MultiSelect من هنا يتم ت ديد هل من المسم ح باالختيار المتعدد أم ال. - :RowSource من المكن استخدام هذه الخاصية لت ديد نطاق من خاليا رقة العمل ي ت ى على عناصر القائمة. - :Value العنصر الم دد بالقائمة. مالحظة إذا تم تهيئة القائمة ب يث تقبل االختيار المتعدد )من خالل الخاصية )MultiSelect فال يمكن في هذه ال الة ت ديد خلية لتعمل ك ControlSource يث أن نتيجة الت ديد أكثر من قيمة بالتالي ال يمكن 182

197 النماذج ضع جميع تلك القيم بداخل خلية ا دة. في هذه ال الة يجب كتابة ماكر يق م بتخزين القيم الم ختارة بداخل نطاق ما. تعبئة القائمة Populating List هناك طريقتين لتعبئة القائمة: اما من خالل الخاصية RowSource إما برمجيا من خالل AddItem.method لتعبئة القائمة من خالل الخاصية RowSource دد القائمة المطل بة ثم من جزء الخصائص الخاص بها أدخل النطاق الذي ي ت ي على عناصر القائمة في البند RowSource كما يظهر في الشكل Figure

198 الفصل الثاني عشر على الرغم من أن الطريقة السابقة قد تك ن مفيدة في بعض األ يان إال أنه هناك العديد من ال االت التي قد ترغب فيها بأن يتم تعبئة القائمة برمجيا في هذه ال الة يمكن استخدام ال دث الخاص ببدء النم ذج UserForm Initialize event لتعبئة القائمة. ذلك باستخدام.AddItem method كمثال على ذلك لنفترض أنك تريد أن تعبئ القائمة بأسماء أشهر الربع األ ل من السنة بد ن أن يتم تخزين تلك القيم بداخل خاليا رقة العمل. لعمل ذلك من الممكن كتابة الك د التالي في إجرائية معالجة ال دث الخاصة ببدء النم ذج :UserForm Initialize event-handler procedure Private Sub UserForm_Initialize() With ListBox1.RowSource = "".AddItem "January".AddItem "Febreuary".AddItem "March" End With End Sub Figure

199 النماذج ال ظ أننا استخدمنا السطر البرمجي "" =.RowSource في بداية الك د تى نك ن متأكدين من ذف أي قيم سابقة قد تك ن م ج دة في القائمة. مثال على استخدام List Box في النماذج يق م النم ذج في الشكل بعرض جميع أ راق العمل للمصنف ال الي في قائمة List Box لطباعة م ت يات أي رقة يتم ت ديد ال رقة من القائمة ثم الضغط على زر.Print selected sheet Figure لعمل ذلك النم ذج ندرج قائمة ListBox من صند ق األد ات )في هذا المثال أبقينا على اسم القائمة االفتراضي )ListBox1 ثم نعبئ القائمة بأسماء أ راق العمل للمصنف ال الي من خالل ادخال الك د التالي في إجرائية معالجة ال دث الخاصة ببدء النم ذج: Private Sub UserForm_Initialize() Dim osheet As Worksheet For Each osheet In ActiveWorkbook.Worksheets ListBox1.AddItem osheet.name Next osheet ListBox1.ListIndex = 0 End Sub 185

200 الفصل الثاني عشر يعمل هذا الك د كالتالي: في البداية تم تعريف متغير باسم osheet من ن ع Worksheet تم استخدام جملة التكرار For.Next للتكرار عبر أ راق العمل بداخل المصنف ثم ادراج اسم كل رقة عمل بداخل القائمة من خالل الجملة البرمجية: ListBox1.AddItem osheet.name ثم استخدمنا ListIndex method الختيار أ د العناصر بداخل القائمة بشكل تلقائي من خالل السطر البرمجي = 0 ListBox1.ListIndex الذي يق م بت ديد العنصر األ ل في القائمة بشكل افتراضي.Default value إلدراج الك د الخاص بزر الطباعة انقر نقرا مزد جا ف ق الزر لفتح إجرائية معالجة ال دث الخاص بالزر ثم أدرج الك د التالي: Private Sub CommandButton1_Click() Selected_Sheet = ListBox1.Value Unload Me Worksheets(Selected_Sheet).PrintPreview End Sub يث يق م الك د بعمل معاينة قبل الطباعة ل رقة العمل الم ختارة. لطباعة رقة العمل مباشرة بد ن عمل معاينة يمكنك استخدام الك د التالي: Private Sub CommandButton1_Click() Unload Me Worksheets(ListBox1.Value).PrintOut End Sub 186

201 النماذج اآلن أصبح الك د الكامل كما في الشكل Figure ComboBox بخالف عناصر الت كم األخرى )مثل List Box مالحظة ال ظ هنا التالي: قائمة )CheckBox ال ت تفظ بقيمتها بعد تطبيق Unload Me لذلك خزن ا القيمة الم ددة بداخل القائمة بداخل المتغير Selected_Sheet قبل تطبيق.Unload Me 187

202 الفصل الثاني عشر استخدام االختيار المتعدد مع القائمة Multi-Select ListBox تعطيك قائمة List Box إمكانية اختيار أكثر من عنصر في نفس ال قت من خالل تعديل الخاصية Mutiselect كما في الشكل ال ظ أن هذه القائمة ت ت ي على ثالث خيارات: :fmmultiselectsingle الختيار عنصر ا د فقط :fmmultiselectmulti الختيار أكثر من عنصر باستخدام النقر بالما س. :fmmultiselectextended الختيار أكثر من عنصر باستخدام النقر بالما س مع زر.CTRL Figure

203 النماذج من الممكن تعديل هذه الخاصية من خالل جزء الخصائص الخاص بالقائمة كما بالشكل أعاله. أ برمجيا من خالل ال.MultiSelect property فمثال لجعل القائمة ذات اختيار متعدد من خالل البرمجة باإلمكان ادخال الك د التالي في إجرائية ال دث الخاصة ببدء النم ذج: ListBox1.MultiSelect = fmmultiselectmulti يساعدك م رر األك اد في ادخال الخيار المناسب لك من خالل ميزة االختيار التلقائي كما في الشكل Figure مثال على استخدام القائمة مع االختيار المتعدد في الشكل مثال على استخدام االختيار المتعدد مع قائمة List Box يث أنك من خالل هذا النم ذج تستطيع ت دد أكثر من رقة عمل ثم عرض معاينة قبل الطباعة أل راق العمل الم ددة. Figure

204 الفصل الثاني عشر لعمل هذا النم ذج استخدم المثال السابق من م رر األك اد VBE افتح النم ذج دد القائمة ثم عدل خصائصها من جزء الخصائص اختر الخيار fmmultiselectmulti أ. fmmultiselectextended أدخل الك د التالي الخاص بزر الطباعة عن طريق النقر المزد ج ف ق زر الطباعة من ثم كتابة الك د في إجرائية معالجة ال دث التي س ف تفتح: Private Sub CommandButton1_Click() End Sub Unload Me For i = 0 To ListBox1.ListCount - 1 Next i If ListBox1.Selected(i) Then Sheets(ListBox1.List(i)).PrintPreview End If بما أننا سم نا باالختيار المتعدد في القائمة ListBox1 فال يعد باإلمكان استخدام الخاصية Value يث أن االختيار قد يك ن أكثر من قيمة بالتالي فإننا استخدمنا جملة التكرار For Next للتكرار عبر عناصر القائمة ف ص كل عنصر هل ه م دد أم ال من خالل الخاصية Selected فإذا كان م دد يتم عرض المعاينة قبل الطباعة ل رقة العمل التي ت مل نفس اسم العنصر الم دد. 190

205 النماذج القائمة المنسدلة Combo Box القائمة المنسدلة Combo Box تجمع ما بين خصائص القائمة List Box مربع ادخال النص Input Box )سيتم التطرق له ال قا ( يث أنك من خالل ال Combo Box تستطيع إعطاء المستخدم إمكانية ادخال قيمة جديدة بخالف العناصر الم ج دة في القائمة باإلضافة إلى إمكانية اختيار عنصر من عناصر القائمة. بإمكانك أن تلغي إمكانية ادخال القيم الجديدة االقتصار على االختيار من القائمة فقط. مثال على استخدام القائمة المنسدلة تم تعديل المثال السابق ب يث نستخدم القائمة المنسدلة بدال من قائمة List Box الختيار رقة العمل التي نريد طباعتها. لعمل هذا النم ذج قم بإدراج Combo Box على النم ذج )في هذا المثال أبقينا على االسم االفتراضي للقائمة المنسدلة ه.)ComboBox1 ثم قم بتعبئة القائمة المنسدلة بأسماء أ راق العمل بنفس الطريقة التي استخدمناها في المثال السابق من خالل إدخال الك د التالي في إجرائية ال دث الخاصة ببدء النم ذج: Private Sub UserForm_Initialize() Dim osheet As Worksheet For Each osheet In ActiveWorkbook.Worksheets Next osheet ComboBox1.AddItem osheet.name ComboBox1.ListIndex = 0 End Sub ال ظ هنا أننا ددنا القيمة االفتراضية للقائمة المنسدلة من خالل السطر البرمجي: ComboBox1.ListIndex = 0 191

206 الفصل الثاني عشر بالنسبة للك د الخاص بزر األمر فس ف يك ن كالتالي: Private Sub CommandButton1_Click() Unload Me Sheets(ComboBox1.Value).PrintPreview End Sub تجدر المال ظة أنه ال ت جد إمكانية لالختيار المتعدد في القائمة المنسدلة. Figure إللغاء إمكانية إدخال قيم جديدة )غير م ج دة ضمن القائمة( عدل الخاصية Style.fmStyleDropDownList للقيمة 192

207 النماذج Figure مربع النص Text Box يعتبر مربع النص من ال سائل المثالية إلدخال البيانات يث يمكنك من خالله ادخال أي ن ع من البيانات مثل النص ص أ األرقام أ غيرها. الشكل يظهر مثاال على استخدام مربع النص في النماذج. فيما يلي أهم الخصائص الخاصة بمربع النص: ت ي على :ControlSource من الممكن استخدام هذه الخاصية إلدخال عن ان الخلية التي ت - النص الذي نرغب بإظهاره في مربع النص. :MaxLength ال د األقصى لل ر ف التي يمكن إدخالها في مربع النص. - :MultiLine اذا كانت قيمة هذه الخاصية True فيمكن ادخال أ عرض أكثر من سطر في - مربع النص. :TextAlligne للت كم بم اذاة النص

208 الفصل الثاني عشر Figure مثال على استخدام مربع النص في الشكل تم ادراج مربع نص زري أمر في النم ذج المطل ب برمجة الزر العل ي ب يث يعرض القيمة التي تم إدخالها في مربع النص أما الزر السفلي فيق م بتخزين النص الم ج د في مربع النص في الخلية A1 ل رقة العمل النشطة. Figure

209 النماذج لعمل ذلك انقر ف ق الزر العل ي لفتح إجرائية معالجة ال دث الخاصة به ثم أدخل الك د التالي: Private Sub CommandButton1_Click() End Sub MsgBox TextBox1.Value اما بالنسبة للزر السفلي فأدخل الك د التالي في إجرائية معالجة ال دث الخاصة به: Private Sub CommandButton2_Click() End Sub Range("A1").Value = TextBox1.Value مثال. بناء نموذج لترحيل البيانات يق م النم ذج في الشكل بتخزين البيانات الم ج دة في مربعي النص على النم ذج إلى رقة العمل Sheet1 كما ه ظاهر في الشكل. لعمل هذا النم ذج أدرج عناصر الت كم كما ه ظاهر في الشكل. أعط مربع االسم الخاص باسم المنتج Product مربع االسم الخاص ب صف المنتج Name_box االسم: Product Name.Desc_box االسم: Description 195

210 الفصل الثاني عشر Figure انقر ف ق زر OK نقرا مزد جا لفتح إجرائية معالجة ال دث الخاصة بالنقر ف ق الزر ثم أدخل التالي: Private Sub CommandButton1_Click() last_row = Cells(Rows.Count, 1).End(xlUp).Row With Sheets("sheet1").Cells(last_row + 1, 1) = Name_box.Value.Cells(last_row + 1, 2) = desc_box.value End With End Sub 196

211 النماذج - يعمل هذا الك د كالتالي: أ ال تم ت ديد آخر صف ي ت ي على بيانات في العم د األ ل من خالل السطر البرمجي: last_row = Cells(Rows.Count, 1).End(xlUp).Row - يث يعمل هذا السطر كالتالي: أ ال يق م بت ديد آخر خلية في العم د األ ل من خالل.(1 Cells(Rows.Count, ثم يق م بالسير لألعلى تى يصل أل ل خلية بها بيانات تقابله من خالل.Row ثم يرجع رقم الصف من خالل.End(xlUp) بعد أن عرفنا آخر صف ي ت ي على بيانات في العم د األ ل المطل ب اآلن أن نر ل البيانات الم ج دة في مربع النص الخاص باسم المنتج إلى الخلية التي تلي آخر خلية بها بيانات في العم د األ ل أن نر ل البيانات الم ج دة في مربع النص الخاص ب صف المنتج إلى الخلية التي تلي آخر خلية بها بيانات في العم د الثاني. ذلك تم من خالل الك د التالي: With Sheets("sheet1").Cells(last_row + 1, 1) = Name_box.Value.Cells(last_row + 1, 2) = desc_box.value End With أ ال ددنا ال رقة التي نريد أن نر ل البيانات لها من خالل Sheets("sheet1") With ثم من خالل السطرين التاليين ددنا الخليتين اللتين تليان آخر صف في العم د األ ل الثاني تم تعيين قيمة مربعي النص الخاصين باالسم ال صف إليهما. إضافة زر لمحو بيانات نموذج الترحيل من المفضل إضافة زر للنم ذج يق م بم البيانات من مربعات النص كما في الشكل

212 الفصل الثاني عشر Figure أدرج زر أمر جديد أعطه االسم Clr_Button التسمية Clear Form أدخل الك د التالي في إجرائية معالجة ال دث: ثم انقر عليه نقرا مزد جا Private Sub Clr_Button_Click() End Sub Name_box.Value = "" desc_box.value = "" إضافة حقل خاص برقم المنتج إلى نموذج الترحيل مع عدم السماح بتكرار رقم المنتج للسماح للمستخدم بإدخال رقم المنتج باإلضافة إلى اسمه صفه عدل رقة العمل كما في الشكل بإضافة عم د جديد باسم Product ID قبل عم د اسم المنتج. ثم أضف مربع نص جديد للنم ذج السابق أعطه االسم id_box التسمية Product ID ثم عدل الك د الخاص بزر Add Product ليصبح كالتالي: 198

213 النماذج Private Sub Add_Button_Click() If WorksheetFunction.CountIf(Range("A:A"), id_box.value) > 0 Then MsgBox ("Duplicate ID!! please use non duplicate ID...") Exit Sub End If last_row = Cells(Rows.Count, 1).End(xlUp).Row With Sheets("sheet1").Cells(last_row + 1, 1) = id_box.value.cells(last_row + 1, 2) = Name_box.Value.Cells(last_row + 1, 3) = desc_box.value End With End Sub من المنطقي أن يك ن لكل منتج رقم غير متكرر )فريد( للت قق من أن رقم المنتج غير مستخدم من قبل استخدمنا جملة IF كالتالي: If WorksheetFunction.CountIf(Range("A:A"), id_box.value) > 0 Then MsgBox ("Duplicate ID!! please use non duplicate ID...") Exit Sub End If 199

214 الفصل الثاني عشر يق م السطر األ ل في جملة IF باستخدام دالة رقة العمل CountIf لف ص ما إذا كانت القيمة الم ج دة في مربع النص الخاص برقم المنتج id_box م ج دة من قبل في العم د A فإذا كانت م ج دة فستظهر رسالة خطأ تفيد بأن القيمة المدخلة متكررة ثم تخرج من اإلجرائية من خالل.Exit Sub في النهاية عدل الك د الخاص بزر م بيانات النم ذج ليصبح كالتالي: Private Sub Clr_Button_Click() id_box.value = "" Name_box.Value = "" desc_box.value = "" End Sub Figure

Microsoft Word - Excel VBA

Microsoft Word - Excel VBA الفصل الا ول (البداية) قواعد البرمجة...4 مقارنة بين VB و...4 VBA ضبط بيي ة Excel للبرمجة...5 الماآرو فى برنامج...8 Excel أنواع الماآرو... 9 تنفيذ الماآرو... 11 شروط اسماء المتغيرات...18 الكاي ناتObjects...18

المزيد من المعلومات

) NSB-AppStudio برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( ) برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( NSB-AppStudio الدرس األول ) 1 ( الدرس

) NSB-AppStudio برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( ) برمجة تطبيقات األجهزة الذكية باستخدام برنامج ( NSB-AppStudio الدرس األول ) 1 ( الدرس ) NSB-AppStudio ) 1 ( أهداف الدرس : بعد انتهاء هذا الدرس ستكون الطالبة قادرة على أن : )1 توضح مميزات برنامج ( NSB-AppStudio ) 2( تعدد لغات البرمجة المستخدمة في برنامج ( NSB-AppStudio ) 3( تذكر خطوات كتابة

المزيد من المعلومات

Microsoft Word - Access VBA

Microsoft Word - Access VBA الفصل الا ول (البداية) تصميم قاعدة بيانات بسيطة...4 الا وامر الا ساسية المتوفرة فى المعالجات...12 الفصل الثانى (برمجة ا كسيس (VBA برمجة أآسيس...18 VBA مقارنة بين VB وVBA...18 الدخول إلى صفحات آتابة برامج

المزيد من المعلومات

الأول في السي شارب((c#للمبتدائين

الأول في السي شارب((c#للمبتدائين شباب التنميه والبداع : امحد ياسني شلش ذ د الدرس األول: فتح فيوجل ستوديو وشرحه 2012 1 -هذا هوه البرنامج نقوم بفتحه نسخه 2012 فيوجل استوديو new )نضغط علي - 2 اي مشروع جديد( project المتبنأ هذه لغه فيوجل

المزيد من المعلومات

المحاضرة الثانية

المحاضرة الثانية المحاضرة الثان ة أنواع الب انات)المتغ رات و الثوابت( محتو ات المحاضرة أنواع الب انات اإلعالن عن المتغ رات الثوابت إسناد الق م إلى المتغ رات واجهة برنامج Visual Studio 2010 2 أنواع الب انات كلمات لغة ال

المزيد من المعلومات

Microsoft Word - C#2

Microsoft Word - C#2 الفصل الا ول مفاهيم البرمجة بواسطة الا هداف معنى البرمجة بواسطة األھداف... 5 معنى الفصيلة 5...Class ما ھي دوال البناء و دوال الھدم...6 Construction & destruction ما ھي خاصية التوريث 7...inheritance ما

المزيد من المعلومات

عرض تقديمي في PowerPoint

عرض تقديمي في PowerPoint Dr./ Ahmed Mohamed Rabie Sayed 1 2 صندوق االدوات صندوق االدوات Tools Box يحتوى اظهار وإخفاء Tools Box من قائمة على االدوات Window الرئيسية الالزمة النشاء واختيار.Tools وتعديل التصميم. ويمكن 3 Move Tool

المزيد من المعلومات

ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة : اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة ا

ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة : اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة ا ورقة عمل الدرس الثاني تطبيقي اخلاص على هاتفي... برنامج App Inventor اعداد املعلمة اماني ممدوح املصري مدرسة امحد شوقي الثانوية للبنات اختار اإلجابة الصحيحة من بني االختيارات االتية - نضغط على االمر ببرنامج

المزيد من المعلومات

SP-1101W/SP-2101W eciug niitallatini kciuq 1.0v /

SP-1101W/SP-2101W eciug niitallatini kciuq 1.0v / SP-1101W/SP-2101W eciug niitallatini kciuq 1.0v / 1014-05 1 I. معلومات حول المنتج 1-1. محتويات العبوة مؤتمر نزع السالح مع دليل التثبيت السريع مفتاح القابس الذكي دليل التثبيت السريع 1-2. اللوحة األمامية

المزيد من المعلومات

مادة اثرائية تكنولوجيا الصف الحادي عشر وحدة الوسائط المتعددة شرح برنامج VSDC إلنتاج وحترير الفيديو المشرف التربوي د.عطايا يوسف عابد مديرية التربية وال

مادة اثرائية تكنولوجيا الصف الحادي عشر وحدة الوسائط المتعددة شرح برنامج VSDC إلنتاج وحترير الفيديو المشرف التربوي د.عطايا يوسف عابد مديرية التربية وال مادة اثرائية تكنولوجيا الصف الحادي عشر وحدة الوسائط المتعددة شرح برنامج VSDC إلنتاج وحترير الفيديو المشرف التربوي د.عطايا يوسف عابد مديرية التربية والتعليم شرق غزة مارس 9102 م الصفحة 1 تطبيقات برنامج VSDC

المزيد من المعلومات

Microsoft Word - new.doc

Microsoft Word - new.doc الدرس الاول فى الماتلاب عنوان الدرس : ما هو الماتلاب الماتلاب هو لغة ذات مستوى عالى للحسابات والبرمجة و تمتاز بوجود برنامج يسهل عملية التعامل مع هذه اللغة. ويشمل البرنامج على: الحسابات الرياضية عمل الالجوريثمات

المزيد من المعلومات

Allomani Warehouse User Guide

Allomani Warehouse User Guide المخزن warehouse.allomani.com دليل المستخدم اللوماني للخدمات البرمجية www.allomani.com / 11 اكتوبر / 2010 1 P a g e المحتويات اضافة و اعداد موقعك في المخزن... 3 اعداد بيانات ال...FTP 3 اعدادات بيانات حقوق

المزيد من المعلومات

دليل تدريبي : الحلول لما بعد اختراق الحسابات إعداد : محمد المسقطي Mohammed Al-Maskati بمساعدة : علي السباعي Ali Sibai

دليل تدريبي : الحلول لما بعد اختراق الحسابات إعداد : محمد المسقطي Mohammed Al-Maskati بمساعدة : علي السباعي Ali Sibai دليل تدريبي : الحلول لما بعد اختراق الحسابات إعداد : محمد المسقطي Mohammed Al-Maskati Twitter:@mohdmaskati بمساعدة : علي السباعي Ali Sibai Twitter:@alisibai المقدمة : العديد منكم يتعرض إلى حالة من الصدمة

المزيد من المعلومات

كيفية تفعيل خدمة IIS ونشر موقع ويب على الشبكة احمللي السالم عليكم اصدقائي الكرام في هذا الكتاب سنتناول ما هي خدمة المعلومات وكيفية التفعيل ونشر الموقع

كيفية تفعيل خدمة IIS ونشر موقع ويب على الشبكة احمللي السالم عليكم اصدقائي الكرام في هذا الكتاب سنتناول ما هي خدمة المعلومات وكيفية التفعيل ونشر الموقع كيفية تفعيل خدمة IIS ونشر موقع ويب على الشبكة احمللي السالم عليكم اصدقائي الكرام في هذا الكتاب سنتناول ما هي خدمة المعلومات وكيفية التفعيل ونشر الموقع وتجربته وفي النهاية ستجدون روابط المثال مع شرح فيديو

المزيد من المعلومات

جامعة حضرموت

جامعة حضرموت جاهعة حضرهوت التسجيل االلكتروني لمرحلة التنسيق بالجامعة عبر الموقع www.hu-registration.com الصفحة الرئيسية زر الدخول على النظام ف حالة التسج ل سابقا ولد ك اسم مستخدم وكلمة مرور زر تسج ل متقدم جد د اذا

المزيد من المعلومات

WHAT’S NEW

WHAT’S NEW الجديد في انجز تطبيق إصدارات X.4 المحتويات المحتويات... 1 المواصفات الجديدة بالنظام... 3.1.1.1 عدد المهام التي يجب إنجازها... 3 انشاء مهمة... 3.1.2 2. تعديل تكليف المهمة... 3 تاريخ حالات المهمة... 4.2.1.2.2.3

المزيد من المعلومات

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :-

مختبر البرمجة والتحليل العددي قسم علوم الجو جمل التحكم والشرط والتكرار المرحلة الثانية PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :- جمل التحكم والشرط والتكرار PROGRAM CONTROL, CONDITION AND LOOP STATEMENTS الجمل الشرطية :- تقسم جمل الشرط الى نوعين وهي :- -1 جملة اذا الشرطية ) statement ( if -2 جملة التوزيع ) case ( switch -1 جملة اذا

المزيد من المعلومات

الفرق بين البرمجة الإجرائية و البرمجة المسيرة بالأحداث :

الفرق بين البرمجة الإجرائية و البرمجة المسيرة بالأحداث : طرق كتابة HTML محرر النصوص Text Editor مثل Notepad محرر بطريقة واجهة المستخدم الرسومية GUI Editor وهو محرر يكتب كود بلغة Dream تلقائيا باستخدام القوائم الموجودة فيه مثل برنامج Weaver 8.0 HTML 2 انواع محررات

المزيد من المعلومات

بسم اهلل الرمحن الرحيم الوحدة الثانية الفيجول بيسك Microsoft VISUAL BASIC احلمد اهلل الذي أكرمين و منحين الفرصة لتوفري لكم هذا امللخص املنقى للوحدة ال

بسم اهلل الرمحن الرحيم الوحدة الثانية الفيجول بيسك Microsoft VISUAL BASIC احلمد اهلل الذي أكرمين و منحين الفرصة لتوفري لكم هذا امللخص املنقى للوحدة ال بسم اهلل الرمحن الرحيم الوحدة الثانية الفيجول بيسك Microsoft VISUAL BASIC احلمد اهلل الذي أكرمين و منحين الفرصة لتوفري لكم هذا امللخص املنقى للوحدة الثانية من الكتاب املدرسي للصف احلادي عشر, و ارجوا أن

المزيد من المعلومات

Slide 1

Slide 1 تصميم السيرة الذاتية كصفحات الويب د. احمد عادل اسماعيل عمادة المركز الجامعي لخدمة المجتمع و التعليم المستمر. WWW.Dr-Ahmed.Info Info@Dr-Ahmed.Info -------------- المرجع: www.support.office.com اهداف المحاضرة

المزيد من المعلومات

FS Future Series دليل البدء السريع الرجاء قراءة التعليمات التالية من أجل تثبيت وتنشيط 3D. Visualizer برنامج

FS Future Series دليل البدء السريع الرجاء قراءة التعليمات التالية من أجل تثبيت وتنشيط 3D. Visualizer برنامج FS Future Series دليل البدء السريع الرجاء قراءة التعليمات التالية من أجل تثبيت وتنشيط 3D. Visualizer برنامج 1. اتفاقية الترخيص والضمان المحدود الرجاء قراءة أحكام اتفاقية الترخيص قبل استخدام برنامج.Visualizer

المزيد من المعلومات

Banner – Hold Information SOAHOLD

Banner – Hold Information SOAHOLD 1 Financial Aid System Documentation - eservice E-serviceخطوات التقديم لنظام المساعدات عبر ال 2 خطوات التقديم لنظام المساعدات Steps to apply for financial aid 1 Login to the portal http://my.uaeu.ac.ae

المزيد من المعلومات

اختر عنوان مناسب

اختر عنوان مناسب 1 كيفية الوصول الى البريد االلكتروني في الكلية 2 3 الهدف من المحاضرة.Webmail كيفية الدخول الى حساب البريد االلكتروني في الخادم الجديد باستخدام كيفية استعراض الرسائل االلكترونية في السيرفر القديم..Microsoft

المزيد من المعلومات

Microsoft Word - SolutionOOPFinal2011.doc

Microsoft Word - SolutionOOPFinal2011.doc صفحة 1 من 5 : : A : : 2010/ : : :. : (20/60) (2) ( 20) (10/20) : محاآاة الواقع على أنه مجموعة من الا شياء و أ ن آل شيء مكون من صفات و سلوك هو... التغليف التجرید البرمجة الشيي ية إخفاء طریقة تطبيق السلوك

المزيد من المعلومات

دليل المستخدم لبوابة اتحاد المالك التفاعلية

دليل المستخدم لبوابة اتحاد المالك التفاعلية دليل المستخدم لبوابة اتحاد المالك التفاعلية الشاشة الرئيسية 3 إنشاء مستخدم جديد 4 أوال: التسجيل كفرد 5 - نوع الهوية «سعودي» : 5 - نوع الهوية «مقيم :» 6 - نوع الهوية «خليجي» : 7 : التسجيل كمنشأة : 9 ثانيا

المزيد من المعلومات

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

الدوال في اكسل الدوال: هي صيغ معرفة مسبقا تقوم بإجراء عمليات حسابية بإستخدم قيم محددة ووسائط مسماة في ترتيب بنية معينة بناء الدالة: إغالق. يبدأ بناء ا الدوال في اكسل الدوال: هي صيغ معرفة مسبقا تقوم بإجراء عمليات حسابية بإستخدم قيم محددة ووسائط مسماة في ترتيب بنية معينة بناء الدالة: إغالق. يبدأ بناء الدالة بعالمة المساواة )=( ثم اسم الدالة وقوس فتح ويتم

المزيد من المعلومات

ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long i

ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long i ABU DHABI EDUCATION COUNCIL Abu Dhabi Education Zone AL Mountaha Secondary School g-12 science section Mathematics Student Name:.. Section: How Long is the Average Chord of a Circle?/ 2009-2010 Second

المزيد من المعلومات

الفصل الثاني

الفصل الثاني 1 برنامج MINTAB 17 105 احص إعداد أ- ريم المبطي 2 الفصل الثاني ( اختبارات الفروض وفترات الثقة ) لمعالم مجتمع واحد أوال : اختبار المتوسط : لدينا حالتين : نستخدم اختبار Z عندما : N كبيرة و معلومة أو مجهولة

المزيد من المعلومات

الدليل التدريبي لتسجيل منتج البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لتسجيل منتج 0

الدليل التدريبي لتسجيل منتج البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لتسجيل منتج 0 البوابة االلكترونية للمطابقة )سابر( 0 جدول المحتويات 2 2 4 6 7 8 9 11 وصف النظام تسجيل المنتج إضافة منتج عن طريق الرمز المنسق الجمركي HS code إضافة منتج عن طريق الكلمات الداللية إضافة منتج عن طريق البحث

المزيد من المعلومات

عرض تقديمي في PowerPoint

عرض تقديمي في PowerPoint كود التدريب KSH7TDB19 google يتم البحث عنه في متصفح sway يكون ضمن البرامج الموجودة من الموقع للتسجيل في hot mail او الدخول على البريد االلكتروني من : khulood.sairafi ضمن البرامج الموجودة hot mail للتسجيل

المزيد من المعلومات

التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما

التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما التاريخ: االمتحان النهائي لمساق برمجة متقدمة תכנות מתקדם موعد أ الزمن: ساعتان فقط الخميس 2017/7/27 )10 عالمات( السؤال األول for او )while الالزمة لما يلي )الجمل بصيغتين(: أ اكتب جمل التكرار بلغة البرمجة

المزيد من المعلومات

الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات المستوردة( البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات

الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات المستوردة( البوابة االلكترونية للمطابقة )سابر( الدليل التدريبي لطلب شهادة مطابقة إرسالية )للمنتجات البوابة االلكترونية للمطابقة )سابر( 0 جدول المحتويات 2 2 9 1 وصف النظام 2 طلب مطابقة إرسالية جديد 3 إصدار الشهادة 1 1 وصف النظام يهدف هذا النظام لتمكين ضابط اتصال المنشأة ومفوض المنشأة من استخراج شهادة

المزيد من المعلومات

اردوينو – الدرس الثامن – تغيير درجة الالوان لـ RGB LED

اردوينو – الدرس الثامن – تغيير درجة الالوان لـ RGB LED اردوينو الدرس الثامن تغيير درجة الالوان ل RGB LED في هذا الدرس ستقوم بتطبيق ماتعلمته بالدرس السابع والرابع وذلك لاستخدام الازرار في تغيير درجة الالوان في RGB Led القطع المطلوبة لاتمام هذا الدرس عليك توفير

المزيد من المعلومات

قسم تكنولوجيا الحاسوب والمهن الصناعية

قسم تكنولوجيا الحاسوب والمهن الصناعية تكنىلىجيا قسم الحاسىب والمهن الصناعية تطبيقات برمجية الكترونية مقدمة عن برنامج LabView م.محمد األسمر الفصل الثاني 2012 م مقدمة فى LabVIEW الهدف : التعرف على بيئة.LabVIEW المحتويات : Virtual 1( ما هى Instruments

المزيد من المعلومات

عرض تقديمي في PowerPoint

عرض تقديمي في PowerPoint Dr./ Ahmed Mohamed Rabie Sayed 1 2 Symbol Sprayer Tool -23 تستخدم األداة Symbol Sprayer Tool إلنشاء مجموعة من الرموز Symbols التصميم. لتنشيط األداة يتم الضغط على مفتاح Shift+S من لوحة المفاتيح. صفحة داخل

المزيد من المعلومات

دولة فلسطين و ازرة التربية والتعليم العالي المبحث: تكنولوجيا المعلومات / النظري بسم هللا الرحمن الرحيم مدة االمتحان : ساعتان نموذج تجريبي مجموع العالم

دولة فلسطين و ازرة التربية والتعليم العالي المبحث: تكنولوجيا المعلومات / النظري بسم هللا الرحمن الرحيم مدة االمتحان : ساعتان نموذج تجريبي مجموع العالم دولة فلسطين و ازرة التربية والتعليم العالي المبحث: تكنولوجيا المعلومات / النظري بسم هللا الرحمن الرحيم مدة االمتحان : ساعتان نموذج تجريبي مجموع العالمات )70( عالمة مالحظة: عدد األسئلة خمسة أسئلة وعلى الطالب

المزيد من المعلومات

Determinants

Determinants قسم الهندسة الزراعية د/ خالد ف ارن طاهر الباجورى استاذ الهندسة الز ارعية المساعد khaledelbagoury@yahoo.com Mobil: 01222430907 المقدمة ماهي المصفوفة جمع الضرب الكمي للمصفوفات ضرب منقول المصفوفة محدد المصفوفة

المزيد من المعلومات

حقيبة الدورة التدريبية التخزين السحابي Google Drive حقيبة المتدربة إعداد املدربة : عزة علي آل كباس Twitter 1438 ه

حقيبة الدورة التدريبية التخزين السحابي Google Drive حقيبة المتدربة إعداد املدربة : عزة علي آل كباس Twitter 1438 ه حقيبة الدورة التدريبية حقيبة المتدربة إعداد املدربة : عزة علي آل كباس Twitter : @azzahkabbas azzahkabbas@gmail.com 1438 ه الهدف العام : إكساب املتدربات املعرفة بأساسيات الحوسبة السحابية وتطبيقاتها بشكل

المزيد من المعلومات

كيفية استخدام موقع 4shared لرفع الملفات وتنظيمها على النترنت للمبتدئين. والمتقدمين في الحاسب. كتاب ل ابراهيم شاهين

كيفية استخدام موقع 4shared   لرفع الملفات وتنظيمها على النترنت للمبتدئين. والمتقدمين في الحاسب. كتاب ل ابراهيم شاهين كيفية استخدام موقع 4shared www.4shared.com لرفع الملفات وتنظيمها على النترنت للمبتدئين. والمتقدمين في الحاسب. كتاب ل ابراهيم شاهين بسم ال الرحمن الرحيم مقدمة بسيطة موقع 4shared.com هو موقع لرفع الملفات

المزيد من المعلومات

Our Landing Page

Our Landing Page نظام البرمجة SIMATIC S7 PLC وفقا للمستوى الا ساس ف الا صدارة S7-1500 الصفحة 1 من 6 يقد م هذه الدورة التدريبية مدر ب من شركة الهندسية (مجموعة دي و) متخصص ف إصدارات سيمنز. لمحة عامة الهدف الري يس لهذه الدورة

المزيد من المعلومات

متطلبات النظام متطلبات جهاز الكمبيوتر الشخصي معالج Pentium 1 Intel غيغا هرتز أو أسرع نظام التشغيل Windows 2000 أوXP Windows مع Service Pack 2 أو Vista

متطلبات النظام متطلبات جهاز الكمبيوتر الشخصي معالج Pentium 1 Intel غيغا هرتز أو أسرع نظام التشغيل Windows 2000 أوXP Windows مع Service Pack 2 أو Vista متطلبات النظام متطلبات جهاز الكمبيوتر الشخصي معالج Pentium 1 Intel غيغا هرتز أو أسرع نظام التشغيل Windows 2000 أوXP Windows مع Service Pack 2 أو Vista Window أو Windows 7 Enterprise أو Ultimate أو Business

المزيد من المعلومات

Our Landing Page

Our Landing Page نظام البرمجة SIMATIC S7 PLC وفقا للمستوى المتقد م ف الا صدار S7-300/400 الصفحة 1 من 6 يقد م هذه الدورة التدريبية مدر ب من شركة الهندسية (مجموعة دي و) متخصص ف إصدارات سيمنز. لمحة عامة الهدف الري يس لهذه

المزيد من المعلومات

Microsoft Word - Oracle1

Microsoft Word - Oracle1 360 Hòî b þa@âbè½ai Oracle Developer îôèm@æë í@áüèm pbíìn a@ ŠèÏ تعرف على ا وراكل تعرف على أوراكل... 4 مالمح ومزايا مجموعة التطوير 5...Oracle Developer Suite 10g أدوات تطوير التطبيقات...6 Oracle Developer

المزيد من المعلومات

السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات

السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات السالم عليكم و رحمة هللا شرح ربط قاعدة بيانات Access بال.. C# مذا ستستفيد من هذا الموضوع!! -معرفة طريقة صنع قاعدة بيانات بالAccess -ربط قاعدة البيانات هذه بالC # على بركة هللا.. * *إنجاز قاعدة بيانات ب*

المزيد من المعلومات

جمعية زمزم للخدمات الصحية التطوعية بإشراف وزارة الشؤون االجتماعية تصريح رقم )411( نظام إدارة الجودة Quality Management System إجراءات الئحة تقنية املع

جمعية زمزم للخدمات الصحية التطوعية بإشراف وزارة الشؤون االجتماعية تصريح رقم )411( نظام إدارة الجودة Quality Management System إجراءات الئحة تقنية املع جمعية زمزم للخدمات الصحية التطوعية بإشراف وزارة الشؤون االجتماعية تصريح رقم )411( نظام إدارة الجودة Quality Management System إجراءات الئحة تقنية املعلومات زمزم 19 إعداد االسم : هاني عبدالعزيز فلمبان الوظيفة

المزيد من المعلومات

الفهرس: كيفية ضبط الموبايل/التابلت: خدمة االنترنت معرفة مسبقا على الجهاز. في حالة عدم تعريف خدمة االنترنت مسبقا على الجهاز يمكنك ضبطه يدويا ادخل على D

الفهرس: كيفية ضبط الموبايل/التابلت: خدمة االنترنت معرفة مسبقا على الجهاز. في حالة عدم تعريف خدمة االنترنت مسبقا على الجهاز يمكنك ضبطه يدويا ادخل على D الفهرس: كيفية ضبط الموبايل/التابلت: خدمة االنترنت معرفة مسبقا على الجهاز. في حالة عدم تعريف خدمة االنترنت مسبقا على الجهاز يمكنك ضبطه يدويا ادخل على Data Cellular أو network«3g«ثم ادخل على Settings APN

المزيد من المعلومات

تنصيب و إعداد تقانة التستجابة الذكية (SRT) التخزين المؤقت باتستخدام أقراص الحالة الصلبة SRT Intel Smart Response Technology Installation Guide (SSD Ca

تنصيب و إعداد تقانة التستجابة الذكية (SRT) التخزين المؤقت باتستخدام أقراص الحالة الصلبة SRT Intel Smart Response Technology Installation Guide (SSD Ca تنصيب و إعداد تقانة التستجابة الذكية (SRT) التخزين المؤقت باتستخدام أقراص الحالة الصلبة SRT Intel Smart Response Technology Installation Guide (SSD Caching) اللوحة الم ASRock (ASRock Z68) ANTFRA 2014 فهرس

المزيد من المعلومات

جاهعة الوسيلة هركز الشبكات و أنظوة اإلعالم و االتصال والتعلين الوتلفز و التعلين عن بعد مودل Moodle التعل م نظام استخدام "دل ل االلكترون للطلبة" نظام ا

جاهعة الوسيلة هركز الشبكات و أنظوة اإلعالم و االتصال والتعلين الوتلفز و التعلين عن بعد مودل Moodle التعل م نظام استخدام دل ل االلكترون للطلبة نظام ا مودل Moodle التعل م نظام استخدام "دل ل االلكترون للطلبة" نظام التعليم االلكتروني مودل: هدف نظام التعل م االلكترون إل جاد ب ئة تفاعل ة تم من خاللها التواصل ب ن االساتذة ه وطلبتم وب ن الطلبة ف ما ب نهم من

المزيد من المعلومات

مدرسة هارون الرشيد الثانوية للبنين المهارات العملية / تكنولوجيا المعلومات ( الثاني عشر) إعداد/ أ. خالد الح

مدرسة هارون الرشيد الثانوية للبنين المهارات العملية / تكنولوجيا المعلومات ( الثاني عشر) إعداد/ أ. خالد الح املهارات العملية / تكنولوجيا املعلومات )Appinventor )بزنامج :on line من خالل االنترنت مباشرة App inventor خطوات تشعيل برنامج الدخول إلى حساب ج م ل.Gmail ثم رابط الموقع App inventor عبر متصفح االنترنت http://appinventor.mit.edu/explore/

المزيد من المعلومات

Microsoft Word - moneybookers

Microsoft Word - moneybookers الرحيم الرحمن االله بسم א א א ãããaewt{tuaçxà دليل المستخدم العربي في MONEYBOOKERS شرح بنك أوال عن البنك: :معلومات وقلربيزدنيعلما من بريطانيا. 1- البنك جنسيته المناسبة للعمل بھا. به تختار العملة -2 من 5

المزيد من المعلومات

How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i

How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i بسم االله الرحمن الرحيم How To Make Connection Between Oracle DB Server 9i & Oracle Developer 6i آيف تربط الا وراآل 9i مع الديفيلوبر 6i الا س م التخص ص المو ه ل العم ل البل د اله اتف البري د الص فحة يوسف

المزيد من المعلومات

السالم عليكم ورحمة هللا وبركاتة كتاب تعلم برمجة االلعاب بأستخدام محرك االلعاب Unity 3D الكتاب مقدم من االستاذ : عماد عارف التوي موقع : Home OF Games ا

السالم عليكم ورحمة هللا وبركاتة كتاب تعلم برمجة االلعاب بأستخدام محرك االلعاب Unity 3D الكتاب مقدم من االستاذ : عماد عارف التوي موقع : Home OF Games ا السالم عليكم ورحمة هللا وبركاتة كتاب تعلم برمجة االلعاب بأستخدام محرك االلعاب Unity 3D الكتاب مقدم من االستاذ : عماد عارف التوي موقع : Home OF Games الدورة تهتم فقط بتعلم البرمجة من االبتداء الى االحتراف

المزيد من المعلومات

مكونات الحاسب الآلي

مكونات الحاسب الآلي تطبيقات محاسبية بالحاسوب 465 حسب المدخل لبرنامج الجداول اإللكترونية )برنامج األكسل( أ.هناء المغامس Company LOGO ما هو برنامج األكسل : يستخدم برنامج Excel في كافة التطبيقات التي تحتاج إلى تنظيم البيانات

المزيد من المعلومات

الرقابة الداخلية والرقابة الخارجية

الرقابة الداخلية والرقابة الخارجية الرقابة الداخلية - التدقيق الداخلي الرقابة الخارجية القاضي أفرام الخوري الرقابة الداخلية - التدقيق الداخلي والرقابة الخارجية الفقرة االولى : المقاييس العامة ألي نظام رقابي 1 هدف الرقابة : الرقابة على الوسيلة

المزيد من المعلومات

الصف السادس االبتدائي الفصل الدراسي االول بسم هللا الرحمن الرحيم الصفحة محتويات الفصل الدراسي األول الموضو

الصف السادس االبتدائي الفصل الدراسي االول بسم هللا الرحمن الرحيم الصفحة محتويات الفصل الدراسي األول الموضو بسم هللا الرحمن الرحيم الصفحة 2 3 4 5 6 7 9 11 11 13 14 16 16 17 11 19 22 محتويات الفصل الدراسي األول الموضوع اختيار دولة محددة تغيير نمط عرض التاريخ لالرقام تغيير نمط عرض التاريخ )هجري - ميالدي( تغيير

المزيد من المعلومات

PowerPoint Presentation

PowerPoint Presentation عرض لنظام المعماري الاستراتيجي لمتابعة الأداء وتنفيذ الاستراتيجيات 1999 مقدمة تاسست عام في مصر شركة مساهمة خاصة من عام 2002 المقر الرئيسي بالقاهرة 35 موظف شركاء استراتيجيين في الشرق الأوسط خبرات دولية

المزيد من المعلومات

شرح توزيعة Parted Magic السلم عليكم و رحمة ال تعالى و بركاته شرح توزيعة Parted Magic )الصدار الثالث( الفهرس : (1 مقدمة (2 تحميل التوزيعة (

شرح توزيعة Parted Magic السلم عليكم و رحمة ال تعالى و بركاته شرح توزيعة Parted Magic )الصدار الثالث( الفهرس : (1 مقدمة (2 تحميل التوزيعة ( السلم عليكم و رحمة ال تعالى و بركاته )الصدار الثالث( الفهرس : (1 مقدمة 02... (2 تحميل التوزيعة 02... (3 حرق التوزيعة 06... (4 شرح قوائم محمل القلع 09... (5 لقطات من داخل التوزيعة 25... مرحلة القلع 25...

المزيد من المعلومات

The Global Language of Business دليل ارشادي الستخدام صفحة خدمات الشركات األعضاء Members Area 1

The Global Language of Business دليل ارشادي الستخدام صفحة خدمات الشركات األعضاء Members Area 1 دليل ارشادي الستخدام صفحة خدمات الشركات األعضاء Members Area 1 للتسجيل في صفحة خدمات الشركات Area( )Members على الموقع االلكتروني لشركة هيئة الترقيم االردنية www.gs1jo.org.jo يرجى اتباع الخطوات التالية

المزيد من المعلومات

الحل المفضل لموضوع الر اض ات شعبة تقن ر اض بكالور ا 2015 الحل المفص ل للموضوع األو ل التمر ن األو ل: 1 كتابة و على الشكل األس. إعداد: مصطفاي عبد العز

الحل المفضل لموضوع الر اض ات شعبة تقن ر اض بكالور ا 2015 الحل المفص ل للموضوع األو ل التمر ن األو ل: 1 كتابة و على الشكل األس. إعداد: مصطفاي عبد العز الحل المفص ل للمضع األ ل التمر ن األ ل: كتابة على الشكل األس k ' cos s cos s e e ب( تع ن ق م العدد الطب ع بح ث كن العدد حق ق ا e e e arg حق ق معناه k منه k عل ه k ' k ح ث e ج( عدد مركب ح ث حساب ط لة العدد

المزيد من المعلومات

الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺮﺍﺑﻊ 2017 )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﻣﺎﺭﺱ 2018 الـرقم الــــق

الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺮﺍﺑﻊ 2017 )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﻣﺎﺭﺱ 2018 الـرقم الــــق الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺮﺍﺑﻊ )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﻣﺎﺭﺱ 2018 الـرقم الــــقياسي لتكاليف اإلنشاءات 1 مفصال حسب : مجموعات المواد والخدمات

المزيد من المعلومات

برنامج المساعدات المادية الذكي خطوات التقديم للمساعدة المادية...2 خطوات رفع المستندات المرفوضة...10 خطوات التاكد من حالة الطلب

برنامج المساعدات المادية الذكي خطوات التقديم للمساعدة المادية...2 خطوات رفع المستندات المرفوضة...10 خطوات التاكد من حالة الطلب برنامج المساعدات المادية الذكي خطوات التقديم للمساعدة المادية...2 خطوات رفع المستندات المرفوضة...10 خطوات التاكد من حالة الطلب... 13 1 خطوات التقديم للمساعدة المادية قبل البدء باستخدام البرنامج الرجاء:

المزيد من المعلومات

الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺜﺎﻟﺚ 2017 )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﺩﻳﺴﻤﺒﺮ 2017 الـرقم الـــ

الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺜﺎﻟﺚ 2017 )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﺩﻳﺴﻤﺒﺮ 2017 الـرقم الـــ الــــــرقم الــــقياسي لتكاليف اإلنــــشاءات مــشاريع األبـــــــراج ﺍﻟـــﺮﺑــﻊ ﺍﻟﺜﺎﻟﺚ 2017 )سنة األساس (2013 ﺗﺎﺭﻳﺦ ﺍﻹﺻﺪﺍﺭ : ﺩﻳﺴﻤﺒﺮ 2017 الـرقم الــــقياسي لتكاليف اإلنشاءات 1 مفصال حسب : مجموعات المواد

المزيد من المعلومات

<4D F736F F D20D8D1EDDEC920CDD0DD20C7E1E1EDE4DFD32E646F63>

<4D F736F F D20D8D1EDDEC920CDD0DD20C7E1E1EDE4DFD32E646F63> بسم االله الرحمن الرحيم السلام عليكم ورحمة االله وبرآاته تم تحميل هذا الكتاب من موقع آتب الحاسب العربية www.cb4a.com للمزيد من الكتب في جميع مجالات الحاسب تفضلوا بزيارتنا في البدایة ستحتاج إلى قرص Hiren's

المزيد من المعلومات

Forum.zyzoom.net

Forum.zyzoom.net إلنتاج مقاطع الفيديو والتعديل عليها Movavi 15.2.0 Videoانفراد_تام إصدار Editor Plus محمول حصري Fonts Lover انفراد حصري على منتديات زيزوووم الصفحة 1 أ قدم إليكم احدث وآخر اصدار لبرنامج Movavi Video Editor

المزيد من المعلومات

طلب الحصول على مقعد في الروضة أوSFO الطلب يجب ان يوضع في بوابة اولياء االمور الموجودة في الموقع االلكتروني للبلدية htts ://sandefjord.ist-asp.com/sand

طلب الحصول على مقعد في الروضة أوSFO الطلب يجب ان يوضع في بوابة اولياء االمور الموجودة في الموقع االلكتروني للبلدية htts ://sandefjord.ist-asp.com/sand طلب الحصول على مقعد في الروضة أوSFO الطلب يجب ان يوضع في بوابة اولياء االمور الموجودة في الموقع االلكتروني للبلدية htts ://sandefjord.ist-asp.com/sandefjordpub/login.htm قبل البدء بالطلب عليك اختيار الروضة

المزيد من المعلومات

الوحدة التاسعة

الوحدة التاسعة الفائدة من احملاضرة التاسعة اإلجراءات و الدوال Procedures and Functions.1.2.3.4 استخدام اإلجراءات والدوال ميكن تلخيصها يف اآليت :- تقليل حجم الربانمج. سهولة تطوير الربانمج يف املستقبل. سهولة اكتشاف اخطاء

المزيد من المعلومات

التحكم في الجهاز عن بعد باستخدام نظام VNC

التحكم في الجهاز عن بعد باستخدام نظام VNC التحكم بالجهاز عن بعد باستخدام نظام VNC ا عداد : صالح عباس. w w w. a n a b i s h. c o m 2 هذا الملف من ا نتاج موقع ا نابيش وكافة حقوق التا ليف والنشر والتوزيع محفوظة للموقع ولا يجوز بيعه ا و تا جيره با

المزيد من المعلومات

c1

c1 Zain Broadband Thank you for choosing Zain Broadband. With your Zain Broadband, you can explore and experience the internet world at high speed. This manual describes the indicator of Zain Broadband Modem,

المزيد من المعلومات

Microsoft Word - Question Bank-II Sem. BA Arabic Core Course, Informatics with DTP

Microsoft Word - Question Bank-II Sem. BA Arabic Core Course, Informatics with DTP UNIVERSITY OF CALICUT SCHOOL OF DISTANCE EDUCATION B.A ARABIC (2011 Admn. onwards) SECOND SEMESTER Core Course INFORMATICS WITH D.T.P. QUESTION BANK من إخترع "الصفر" (العرب الا وربيون الفرنسيون الا لمانيون)

المزيد من المعلومات

شرح برنامج استعادة الملفات المحذوفة Recover my files من اعداد : رافاييل يوسف مقدمة: آلنا يعلم ان اجهزة الكومبيوتر قادرة على حفظ الملفات على قرصها الصل

شرح برنامج استعادة الملفات المحذوفة Recover my files من اعداد : رافاييل يوسف مقدمة: آلنا يعلم ان اجهزة الكومبيوتر قادرة على حفظ الملفات على قرصها الصل شرح برنامج استعادة الملفات المحذوفة Recover my files من اعداد : رافاييل يوسف مقدمة: آلنا يعلم ان اجهزة الكومبيوتر قادرة على حفظ الملفات على قرصها الصلب على شكل موج ات آهرومغناطيسية و اننا نعلم باننا نستطيع

المزيد من المعلومات

المملكة العربية السعودية م ق س ..../1998

المملكة العربية السعودية م ق س ..../1998 SFDA.FD 2483 /2018 الدهون )األحماض الدهنية( المتحولة Trans Fatty Acids ICS : 67.040 تقديم الهيئة جهة مستقلة الغرض األساسي لها هو القيام بتنظيم وم ارقبة الغذاء والدواء واألجهزة الطبية ومن مهامها وضع اللوائح

المزيد من المعلومات

Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of

Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of Schedule Planner User Guide Target Audience: Students This tool can help you better plan your course schedule by generating a visual representation of possible schedules with no time conflict. Getting

المزيد من المعلومات

برمجة NXT والخوارزميات تتبع الخط سلسلة دروس الروبوت التعل م قسم برمجة NXT والخوارزم ات تتبع الخط )حساس الضوء واأللوان( 1

برمجة NXT والخوارزميات تتبع الخط سلسلة دروس الروبوت التعل م قسم برمجة NXT والخوارزم ات تتبع الخط )حساس الضوء واأللوان(   1 سلسلة دروس الروبوت التعل م قسم برمجة NXT والخوارزم ات )حساس الضوء واأللوان( www.talents.edu.sa 1 اإلصدار 1,1 سبتمبر 2111 شركة المواهب الوطن ة للتدر ب والتعل م 2111 بعض الحقوق محفوظة. باستثناء المواضع الت

المزيد من المعلومات

قررت وزارة التعليم تدري س هذا الكتاب وطبعه على نفقتها الريا ضيات لل صف االأول االبتدائي الف صل الدرا سي الثاين كتاب التمارين قام بالت أاليف والمراجعة

قررت وزارة التعليم تدري س هذا الكتاب وطبعه على نفقتها الريا ضيات لل صف االأول االبتدائي الف صل الدرا سي الثاين كتاب التمارين قام بالت أاليف والمراجعة قررت وزارة التعليم تدري س هذا الكتاب وطبعه على نفقتها الريا ضيات لل صف االأول االبتدائي الف صل الدرا سي الثاين كتاب التمارين قام بالت أاليف والمراجعة فريق من المتخ ص صين طبعة 9 0 ه 08 09 م ح وزارة التعليم

المزيد من المعلومات

مكثف الثالثة الوحدة البوابات املنطقية 1 هاتف : مدارس األكاد م ة العرب ة الحد ثة إعداد المعلم أحمد الصالح

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

المزيد من المعلومات

( اختبارات الفروق لعينتين مستقلتين Samples) 2) Independent مان- ويتني( U (Mann-Whitney ب( نحتاج الى ھذا القانون الغراض المقارنة بين مجموعتين او عينتين

( اختبارات الفروق لعينتين مستقلتين Samples) 2) Independent مان- ويتني( U (Mann-Whitney ب( نحتاج الى ھذا القانون الغراض المقارنة بين مجموعتين او عينتين ( اختارات الفروق لعينتين مستقلتين Samples) 2) Independent مان ويتني( U (MannWhitney ( نحتاج الى ھذا القانون الغراض المقارنة ين مجموعتين او عينتين مستقلتين مثال المقارنة ين عينة للذكور م ع عينة لالناث او

المزيد من المعلومات

عرض تقديمي في PowerPoint

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

المزيد من المعلومات

Microsoft Word - AR_ _UM TLCD - KBRC01A.doc

Microsoft Word - AR_ _UM TLCD - KBRC01A.doc TOUCH LCD WALL CONTROLLER for Online Controller KBRC01A دليل المستخدم 1. وصف للشاشة التي تعمل بلمس Controller) (Touch LCD Wall التحكم عن طریق اللمس (LCD) هو من لوازم المحول KKRP01A الذي یسمح بتحكم سهل

المزيد من المعلومات

8 مادة إثرائية وفقا للمنهاج الجديد األساسي الثامن للصف الفصل الدراسي األول إعداد املعلم/ة: أ. مريم مطر أ. جواد أبو سلمية حقوق الطبع حمفوظة لدى املكتبة

8 مادة إثرائية وفقا للمنهاج الجديد األساسي الثامن للصف الفصل الدراسي األول إعداد املعلم/ة: أ. مريم مطر أ. جواد أبو سلمية حقوق الطبع حمفوظة لدى املكتبة 8 مادة إثرائية وفقا للمنهاج الجديد الساسي الثامن للصف الفصل الدراسي الول إعداد املعلم/ة:. مريم مطر. جواد و سلمية حقوق الطع حمفوظة لدى املكتة الفلسطينية رقم إيداع )017/614( من وزارة الثقافة تطل من املكتة

المزيد من المعلومات

PowerPoint Presentation

PowerPoint Presentation مصرف اإلنماء التقديم للوظائف الداخلية 21 أكتوبر 2018 التسجيل كموظف داخلي في حال التحاقك بالمصرف في أو قبل 22 فبراير 2016 يكون لديك بالفعل حساب في بوابة التوظيف. يرجى النقر على الرابط التالي: https://career.alinma.com/en/forgotuserinfo/

المزيد من المعلومات

Microsoft Word - 1-NURSE CALL SYSTEM

Microsoft Word - 1-NURSE CALL SYSTEM أنظمة التيار الخفيف 1 -نظام استدعاء الممرضات Eman.A (نظام استدعاء الممرضات) NURSE CALL SYSTEM الھدف من النظام : تسھيل عملية الرعاية الصحية للمرضي, مساعدته في حالة الطوارء. تسھيل التواصل بين فريق العالج

المزيد من المعلومات

Microsoft Word - dériv sc maths.doc

Microsoft Word - dériv sc maths.doc الاشتقاق تطبيقاته دراسة الدال الثانية سلك بكالريا ع ف ع ح أ - الاشتقاق في نقطة- الدالة المشتقة ( A أنشطة نشاط باستعمال التعريف ادرس اشتقاق الدالة في حدد العدد المشتق في إن جد ثم حدد معادلة المماس أ نصف

المزيد من المعلومات

Visual Basic.Net كتاب تعليمي للمبتدئيين اعداد / محمد حازم الشميري 1

Visual Basic.Net كتاب تعليمي للمبتدئيين اعداد / محمد حازم الشميري 1 1 سلسلة تعليمية من الصفر حتى االحتراف بيسك فيجوال. نت للمبتدئيين الطبعة االولى 3418 ه 6132 م 2 محمد حازم الشميري خريج كلية العلوم االدارية / محاسبة بك جامعة تعز 4102 م الجمهورية اليمنية تعز االيميل : profionaldhim@gmail.com

المزيد من المعلومات

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

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

المزيد من المعلومات

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

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

المزيد من المعلومات

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

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

المزيد من المعلومات

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

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

المزيد من المعلومات

Certified Facility Management Professional WHO SHOULD ATTEND? As a Certified Facility Management Professional course, Muhtarif is the ideal next step

Certified Facility Management Professional WHO SHOULD ATTEND? As a Certified Facility Management Professional course, Muhtarif is the ideal next step Certified Facility Management Professional WHO SHOULD ATTEND? As a Certified Facility Management Professional course, Muhtarif is the ideal next step for all those who have completed the Ta aseesy Foundation

المزيد من المعلومات

16 أبريل 2019 االطالق الرسمي للجائزة

16 أبريل 2019 االطالق الرسمي للجائزة 16 أبريل 2019 االطالق الرسمي للجائزة إطالق جائزة ولي العهد ألفضل تطبيق خدمات حكومية والموجهة لطالب الجامعات في المملكة األردنية الهاشمية نبذة عن الجائزة 300+ جامعة +30 حكومية وخاصة في المملكة األردنية

المزيد من المعلومات

الشريحة 1

الشريحة 1 2 األشكال الثالثية األبعاد 4 الف ص ل السادس 5 6 ن 2 : املئ الجدول بالرقم المناسب عدد أضالع القاعدة 4 ن 3 8 عدد أحرف المجس م 6 كانت إذا قاعدة الهرم مثلثة الشكل ذ فكم عدد أضالعها كم حرف ا كانت إذا للهرم

المزيد من المعلومات

Microsoft Word - QA-Reliability

Microsoft Word - QA-Reliability اختبار صلاحية الاستبانات Questionnaires Reliability Analysis لتقويم ا دوات جمع البيانات الميدانية (الاستبانات) باستخدام قياس ليكرت لدرجة الموافقة Likert Scale من نوعان هناك الاختبارات التي لها تخضع ا ن

المزيد من المعلومات

تصحيح مادة الرياضيات شعبة الرياضيات التمرين األول : و أي ان تكون النقط بما أن و و و α β α β α β و منه الشعاعان و غير مرتبطان خطيا إذن النقط من نفس الم

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

المزيد من المعلومات

منح مقد مة من مبادرة ألبرت أينشتاين األكاديمية األلمانية لالجئين إلى النازحين السوريين في لبنان يعرف باسم "دافي (DAFI) العام األكاديمي الجامعي 4102/41

منح مقد مة من مبادرة ألبرت أينشتاين األكاديمية األلمانية لالجئين إلى النازحين السوريين في لبنان يعرف باسم دافي (DAFI) العام األكاديمي الجامعي 4102/41 منح مقد مة من مبادرة ألبرت أينشتاين األكاديمية األلمانية لالجئين إلى النازحين السوريين في لبنان يعرف باسم "دافي (DAFI) العام األكاديمي الجامعي طلب مساعدة تعليمية مالحظة: إن الموعد النهائي لتقديم الطلبات

المزيد من المعلومات

وزارة التربية والتعليم مجلس االمارات التعليمي 1 النطاق 3 مدرسة رأس الخيمة للتعليم الثانوي Ministry of Education Emirates Educational Council 1 Cluster

وزارة التربية والتعليم مجلس االمارات التعليمي 1 النطاق 3 مدرسة رأس الخيمة للتعليم الثانوي Ministry of Education Emirates Educational Council 1 Cluster أوال : أجب عن األسئلة التالية )1 يسحب شخص مكعب ا خشبي ا كتلته ( )8.75kg على أرض إسمنتية نحو اليمين بوساطة حبل يميل فوق األفقي بزاوية ( )27 انظر الشكل جانب ا فإذا كانت قوة الشد في الحبل ( ) 1.00 102 N وعانى

المزيد من المعلومات

Slide 1

Slide 1 Correlation and Regression اإلرتباط واإلنحدار Correlation اإلرتباط - Describes the relationship between two (X & Y) variables يوضح العالقة بين متغيرين )Y, X( - One variable is called independent (X) and

المزيد من المعلومات

نموذج السيرة الذاتية

نموذج السيرة  الذاتية بسم اهلل الرحمن الرحيم البيانات الشخصية االسم تاريخ ومكان الميالد الكلية القسم عمان العلوم التربوية المكتبات و المعلومات المؤهالت الد ارسية الدرجة العلمية التخصص الجهة المانحة لها 2012 دكتو اره علم المعلومات

المزيد من المعلومات

برنامج األمم المتحدة اإلنمائي دليل تدريب لمقدم العروض بالمناقصات إلكتروني ا اإلصدار رقم 3 فبراير/ ش باط سنة 2015 الصفحة 1

برنامج األمم المتحدة اإلنمائي دليل تدريب لمقدم العروض بالمناقصات إلكتروني ا اإلصدار رقم 3 فبراير/ ش باط سنة 2015 الصفحة 1 برنامج األمم المتحدة اإلنمائي دليل تدريب لمقدم العروض بالمناقصات إلكتروني ا اإلصدار رقم 3 فبراير/ ش باط سنة 2015 الصفحة 1 جدول المحتويات: 3 1 تعريفات شائعة:... 5 2 إجراءات العمل... 3 تسجيل مقدمي العطاءات...6

المزيد من المعلومات

مقدمة عن الاوناش

مقدمة عن الاوناش مقدمة عن االوناش مهندس اعداد / ناصر محمود احمد االوناش Cranes هي نوع من المعدات تستخدم لرفع وخفض ونقل االحمال الكبيرة. المبادئ الميكانيكية االساسية لالوناش:- قدرة الونش علي رفع الحمولة. 1. عدم سقوط الونش

المزيد من المعلومات

Cambridge University Press Cambridge IGCSE Arabic as a First Language Coursebook Luma Abdul Hameed, Hanadi Al Amleh, Shoua Fakhouri

Cambridge University Press Cambridge IGCSE Arabic as a First Language Coursebook Luma Abdul Hameed, Hanadi Al Amleh, Shoua Fakhouri الف ل اأ اإنترنت ال ح ف اإعا الف ل في سطو : ي ح ل ل عن إعا ي م ض ع ت ي ي عن إن نت ف ح ل لي مي. حي ت في إعا ي ع ل ت ثي إل ني في ه ا الف ل سي و الط لب ق ا ع : القراء : ف م ج ع مع ني مح. ف م ش ن م ل ع ني

المزيد من المعلومات