Download as pdf or txt
Download as pdf or txt
You are on page 1of 74

‫‪|Page1‬‬

‫حممود زكى الشريف‬


‫‪|Page2‬‬

‫قبل أن نبدأ‪ ،‬دعونا نتأكد من أن األدوات التي نحتاجها موجودة‪.‬‬


‫إذا كنت تستخدم ( ‪ )Excel 2007‬أو إصدار أعلى‬
‫‪ click ". Office button, then click Excel Options‬باالسفل‬

‫حممود زكى الشريف‬


‫‪|Page3‬‬

‫سيتم إضافة عالمة تبويب جديدة و هى ‪Developer‬‬

‫سوف نحتاج فى العمل مع التعليمات البرمجية ل ‪ ، VBA‬محرر‪ ،‬يتم تثبيته بشكل‬


‫افتراضى‪ .‬يمكنك فتحه عن طريق الضغط على تركيبة مفتاح االختصار "‬
‫‪ :" Alt+ F11‬او انقر على‬

‫حممود زكى الشريف‬


‫‪|Page4‬‬

‫الدرس الثاني‬

‫تسجيل املاكرو‬
‫سنقوم بعمل المثال التالى معا للتعرف على تفاصيل خاصة بالكود والماكرو‬
‫وأتمنى أن يتم تنفيذه من قبل الدارس أو الراغب فى التعلم‬

‫المثال‬

‫‪ -‬حذف محتويات األعمدة ‪ A‬و ‪C‬‬


‫‪ -‬نقل محت ويات العمود ‪ B‬الى العمود ‪A‬‬
‫‪ -‬نقل محتويات العمود ‪ D‬الى العمود ‪C‬‬

‫قم بتعبئة محتويات األعمده السابقة بأيه بيانات‬

‫"‪"Ok‬‬ ‫قم بالضغط على " ‪" Record Macro‬‬


‫قم بتنفيذ المطلوب يدويا الى أن تنفذ جميع الخطوات بالترتيب‬
‫ألن كل ما تفعله يتم تسجيله من قبل اداه تسجيل الماكرو‬
‫ثم إضغط على ‪Stop Recording‬‬

‫الخطوات بالصور لتسهيل تنفيذ المطلوب‬

‫بعد تعبئة البيانات قم بالضغط على ‪Record Macro‬‬

‫تظهر لنا نافذة‬

‫‪ - 1‬نقوم بكتابه اسم الماكرو‬


‫نالحظ أن اسم الماكرو ال يحتوى على ايه مسافات‬

‫حممود زكى الشريف‬


‫‪|Page5‬‬

‫ومن الممكن أن نضع عالمه ( _ ) بين كلمتين لو اردنا تسمية الماكرو بأسم مكون‬
‫من كلمتين مثال‬
‫‪ – 2‬نجد ان هناك كلمه ‪ Ctrl +‬وبجوارها مربع‬
‫وتعنى أننا يمكن وضع أى حرف داخل هذا المربع ويكون وسيله إلستدعاء الماكرو‬
‫فيما بعد لتنفيذ المطلوب وهذا امر غير مطلوب حاليا سيتم توضيح ذلك فيما بعد ان‬
‫شاء الرحمن بالتفصيل‬
‫‪ – 3‬هناك مستطيل به سهم رأسه الى األسفل‬
‫وتعنى اختيار من متعدد وهنا نقوم بإختيار الملف المراد تسجيل به الماكرو فى‬
‫حاله ان هناك مثال عدد ( ‪ ) 2‬ملف اكسل مفتوحين‬
‫‪ – 4‬وهناك مربع آخر وهو الوصف المختصر لهذا الماكرو الذى سيتم تسجيله‬
‫وحاليا هذا األمر غير مطلوب‬
‫‪ – 5‬نقوم بالضغط على زر ‪OK‬‬

‫نقوم بكتابه اسم الماكرو او نتركه كما هو موضح‬

‫نقوم بكتابه اى حرف لإلختصار إلستدعاء الماكرو‬


‫وهو غير مطلوب حاليا‬

‫اختيار الملف‬

‫الوصف المختصر‬

‫حممود زكى الشريف‬


‫‪|Page6‬‬

‫بعد االنتهاء من تنفيذ المطلوب بالكامل‬


‫نقوم بالضغط على ايقاف التسجيل‬
‫كما بالصورة التالية‬

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

‫كما بالصورة‬

‫ثم بعد االنتهاء من تنفيذ المطلوب نقوم بالضغط على ايقاف التسجيل‬

‫كما بالصورة‬

‫حممود زكى الشريف‬


‫‪|Page7‬‬

‫النتائج والمالحظات‬

‫لقد تم تسجيل الماكرو‬


‫ونبدأ اآلن فى معرفة تفاصيل الكود الذى قمنا بعمل خطواته من خالل عمليه‬
‫التسجيل ومعرفة بعض األمور األساسية والهامه للكود البرمجى‬

‫للدخول الى الصفحة التى بها الكود البرمجى والذى تم تسجيله تلقائيا فى موديول‬
‫نقوم بالضغط على ‪ ALT+F11‬معا‬

‫تفتح لنا صفحه تسمى صفحه محرر األكواد‬


‫كما بالصورة‬

‫الكود بشكل أوضح الذى تم تسجيله كالتالي‬

‫حممود زكى الشريف‬


‫‪|Page8‬‬

‫المالحظات ‪:‬‬

‫‪ - 1‬يبدأ الكود بكلمه ‪ Sub‬ثم اسم الماكرو ثم هذين القوسين المغلقين ( )‬


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

‫)) وهى دائما تكون مصبوغة باللون‬ ‫'‬


‫‪ – 2‬هناك داخل الكود عالمه ((‬
‫األخضر وتسمى عالمه اقتباس أحادية تشير الى تعليق يمكنك كتابته يدويا‬
‫بأى لغة‬
‫الفائدة منها ‪ :‬وهذا التعليق يكون خاص إما بشرح جزء من الكود أو تشير الى‬
‫تعليمات برمجيه معينه‬
‫يتجاهلها الكود تماما أثناء عملية تنفيذ الكود وليس لها اى تأثير مطلق على الكود‬

‫‪End Sub‬‬ ‫‪ – 3‬ينتهى الكود بجمله‬


‫وهذه الجمله هامه جدا إلنهاء عمل الكود‬
‫‪ – 4‬يمكننا هنا ونحن داخل الموديول الذى به الكود البرمجى الذى تم تسجيله‬
‫تلقائيا بناء على أننا قمنا بتنفيذ الخطوات الخاصة بالمثال يدويا‬

‫‪ ‬تغيير اسم الكود الى اى اسم ‪ ..‬اى نقوم بتغيير كلمه ‪ Module1‬الى اى‬
‫كلمه أخرى قد تكون مع برة عن طبيعة عمل الكود أو حتى يمكننا وضع‬
‫اسمنا باللغة اإلنجليزية طبعا دون ترك مسافات ويمكننا االستعانة بوضع تلك‬
‫العالمه ( _ ) التى تسمى ‪Under Scour‬‬
‫‪ ‬يمكننا التعديل واإلضافة داخل الكود البرمجى ايضا فى تغيير اسماء األعمده‬
‫والمدى وخالفه أو أى أمر آخر كما يترا ء لنا وسيأتى فيما بعد ذكر هذا األمر‬
‫فى الدروس القادمة بشىء من التفصيل‬

‫حممود زكى الشريف‬


‫‪|Page9‬‬

‫الدرس الثالث‬

‫إعدادات األمان‬

‫لغة ‪ VBA‬هي لغة برمجة‬


‫وهذا يعنى أنه يمكن لبعض المبرمجين أن يستغلها استغالال سيئا فى‬
‫إنشاء برامج ضاره تضر بالحاسب اآللى الذى يستخدم هذا البرنامج‬
‫وع ليه قررت شركة مايكروسوفت إضافة خاصية األمان لحماية المستخدم‬

‫وللدخول إلى خيارات األمان نتبع الخطوات التالية ‪:‬‬

‫بأوفيس ‪ 2007‬وما فوق‬


‫نضغط على زر برنامج األوفيس كما بالصورة‬

‫ثم نضغط على ‪ Excel Option‬تظهر لنا نافذة كما بالصورة‬

‫حممود زكى الشريف‬


‫‪| P a g e 11‬‬

‫ثم نختار ‪ Trust Center‬من القائمة تظهر لنا نافذة أخرى كما‬
‫بالصورة‬

‫حممود زكى الشريف‬


‫‪| P a g e 11‬‬

‫ثم نضغط على ‪ Trust Center Settings‬تظهر لنا نافذة كما‬


‫بالصورة‬

‫نجد هنا قسمين بالنافذة األعلى ( الصورة السابقة )‬

‫حممود زكى الشريف‬


‫‪| P a g e 12‬‬

‫الجزء األول به عدد ( ‪ ) 4‬اختيارات‬


‫ومعناهم كالتالى ‪:‬‬

‫‪Disable all macros‬‬ ‫منع اكسل من تشغيل برامج ‪VBA‬‬


‫‪without notification‬‬ ‫الموجوده بالملف‬
‫‪Disable all macros with‬‬ ‫تنبيه المستخدم بوجود برامج‬
‫‪notification‬‬ ‫‪ VBA‬ويسمح للمستخدم بتشغيلها‬
‫وسيلى شرحها بالتفصيل‬
‫‪Disable all macros except‬‬ ‫ال يسمح بتشغيل برامج ‪ VBA‬ال‬
‫‪digitally signed macros‬‬ ‫تحمل توقيعا ( كلمه توقيع تعنى ان‬
‫النسخة الخاصة باألوفيس نسخة‬
‫أصليه وتحمل رقم ) وان كان‬
‫البرنامج يحمل توقيعا يعطى تنبيها‬
‫مثل الخيار السابق الذى سيلى‬
‫شرحه واذا سمح المستخدم لبرنامج‬
‫ما يحمل توقيعا يسمح له تلقائيا‬
‫فيما بعد بتشغيل جميع البرامج التى‬
‫تحمل نفس التوقيع‬
‫‪Enable all macros‬‬ ‫السماح باستخدام جميع البرامج‬
‫دون تنبيه او سؤال المستخدم‬

‫اختيار الخيار الثانى او الثالث‬


‫عندما يقوم المستخدم بفتح البرنامج تظهر نافذة االكسيل كما بالصورة‬
‫التالية‬

‫حممود زكى الشريف‬


‫‪| P a g e 13‬‬

‫وبالضغط على زر ‪Options‬‬

‫تظهر لنا نافذة كما بالصورة التالية‬

‫فإن كنا نثق بالبر نامج والمصدر نضغط على الخيار الثانى وهو‬

‫‪Enable this content‬‬


‫ونضغط على ‪OK‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 14‬‬

‫نتحدث هنا عن استخدام بعض التقنيات التى تجعل استخدامنا‬


‫للماكرو _ ( برمجه اكسل ) _ أكثر مرونه ‪ ..‬وذات طابع احترافى‬
‫وأكثر جماال‬
‫وذلك من خالل استخدام الرسائل من خالل كتابة بعض األكواد‬
‫البسيطه‬
‫السؤال ؟‬
‫أين تكتب تلك األكواد ؟‬
‫تكتب تلك األكواد داخل حدث الشيت‬
‫تكتب داخل حدث المصنف‬
‫تكتب داخل موديول‬
‫تكتب داخل أكواد اليوزر فورم‬

‫أى تكتب حسب الحاجه لها على أن تكون داله على الهدف منها‬
‫سواء كان تحذير من شىء أو طرح سؤال بسيط‬

‫حممود زكى الشريف‬


‫‪| P a g e 15‬‬

‫مثال ( ‪) 1‬‬
‫نريد أن نتأكد من أن الطابعه فى وضع التشغيل وإعطاء المستخدم‬
‫فرصة للتأكد من ذلك مع توقف الماكرو عن العمل الى أن يقرر‬
‫المستخدم الضغط على زر موافق أو ‪OK‬‬

‫التالى نص الرساله التى ستظهر‬


‫كما بالصورة‬
‫”‪MsgBox “Please make sure that the printer is switched on‬‬

‫جدير بالذكر‬
‫عند المالحظة األولى لشكل الرساله كما بالصورة السابقة‬
‫نجد نص الرساله‬
‫ثم زر ‪OK‬‬

‫اذا اإلستنتاج هنا يدفعنا الى ذكر سؤال هام لمعرفة كيفية ظهورها‬
‫بهذا الشكل‬

‫حممود زكى الشريف‬


‫‪| P a g e 16‬‬

‫س ‪ :‬مما تتكون الرساله ؟ وكيف تكتب ؟‬

‫ج ‪ :‬تتكون الرساله من هذه التركيبة التالية‬

‫)]‪MsgBox (prompt [, buttons] [, title] [, helpfile, context‬‬

‫السؤال الذى يطرح نفسه هنا‬

‫س ‪ :‬ماذا تعنى هذه التركيبة ؟‬

‫ج ‪ :‬كالتالى‬
‫كلمة ‪ Prompt‬تعنى ان تكون الرساله سريعه أى عند حدوث أمر ما تظهر‬
‫الرساله سريعا‬

‫‪Buttons‬‬ ‫تعنى األزرار ‪ ..‬وهو أمر اختياري ‪ ..‬يشمل تركيبة الزر وشكل‬
‫األيقونة المصاحبه له التى تظهر داخل نافذة صندوق الحوار ‪..‬‬
‫وهو تعبير رقمى سنتحدث عنه الحقا‬
‫‪Title‬‬ ‫تعنى العنوان الذى يظهر أعلى صندوق الحوار وهو اختيارى‬
‫ايضا ويعبر عنه بكلمات تدل على الهدف من الرساله واذا لم‬
‫يكت ب تلقائيا يتم وضع اسم التطبيق فى شريط العنوان‬
‫‪Helpfile‬‬ ‫تعنى ملف التعليمات ويعبر عنه بكلمات تهدف الى تقديم‬
‫المساعده للمستخدم وهو ايضا اختيارى‬
‫‪context‬‬ ‫تعنى السياق الخاص بالتعليمات التى يسجلها المبرمج ويعبر‬
‫عنه رقميا وسنتحدث عنه الحقا‬

‫هناك أيضا أمور يجب ذكرها ‪:‬‬


‫‪ - 1‬طول الرساله يتكون من ‪ 1201‬حرف‬
‫‪ - 0‬واذا كانت الرساله تتكون من عده أسطر يجب الفصل بين كل سطر بعالمه‬
‫(_ & )‬

‫حممود زكى الشريف‬


‫‪| P a g e 17‬‬

‫‪ – 3‬هناك معيار هام فى الرسائل عندما مثال تريد تحذير المستخدم الى ان الطابعه‬
‫تعمل مع التأكيد على ذلك بزر ‪OK‬‬
‫هنا نستخدم الفواصل وهو امر ضرورى كمثل الرساله التالية‬

‫”!‪MsgBox “Is the printer on?”, , “Caution‬‬

‫وكما الصورة‬

‫القيم الرقمية‬
‫التى سبق اإلشارة عنها‬

‫حممود زكى الشريف‬


| P a g e 18

Constant Value Description


vbOKOnly 0
vbOKCancel 1
vbAbortRetryIgnore 2
vbYesNoCancel 3
vbYesNo 4
vbRetryCancel 5
vbCritical 16
vbQuestion 32
vbExclamation 48
vbInformation 64
vbDefaultButton1 0 First button is default
vbDefaultButton2 256 Second button is default
vbDefaultButton3 512 Third button is default
vbDefaultButton4 768 Fourth button is default
vbApplicationModal 0 ‫يجب أن يستجيب المستخدم للرساله قبل متابعة العمل‬

vbSystemModal 4096 ‫تعطيل كافة التطبيقات حتى يستجيب المستخدم للرساله‬

vbMsgBoxHelpButton 16384 ‫اضافة زر تعليمات فى الرساله‬


vbMsgBoxSetForeground 65536 ‫تحديد اطار الرساله كإطار أمامى‬
vbMsgBoxRight 52488 ‫محاذاة النص الى اليمين‬
vbMsgBoxRtlReading 1048576 ‫اظهار الرساله من اليمين الى اليسار كالمعمول به فى‬
)‫األنظمه العربية ( تعريب‬

‫حممود زكى الشريف‬


‫‪| P a g e 19‬‬

‫فمثال إذا كنت تريد القيمة ‪ 4‬والقيمة ‪32‬‬

‫يكون النص الذى يكتب فى الكود هكذا‬

‫‪MsgBox Prompt:=”Delete this record?”, Buttons:=36‬‬

‫وتظهر الرساله كما بالصورة التالية‬

‫القيمة ‪32‬‬

‫القيمة ‪4‬‬

‫أو يكتب النص هكذا‬

‫‪MsgBox (Prompt:=”Delete this record?”,‬‬


‫)‪Buttons:=vbYesNo + vbQuestion‬‬

‫وإذا أردنا كتابة الرسالة بالترتيب الخاص بها كما ذكرنا بكيفية كتابة‬
‫الرساله فتكون هكذا‬

‫‪MsgBox("Text", vbYesNoCancel +‬‬


‫)"‪vbExclamation + vbDefaultButton2, "Title‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 21‬‬

‫فتظهر الرساله كما بالصورة التالية‬

‫هنا السؤال يطرح نفسه‬

‫هل يمكن كتابة كل هذه األزرار فى الرساله ؟‬

‫))‬ ‫ال‬ ‫اإلجابة بالقطع ((‬

‫‪ ‬فمجموعة القيم من ( ‪ ) 1:5‬تمثل األزرار التى ستظهر فى‬


‫الرساله وعلى حسب ما تريد وتختار‬

‫‪ ‬ومجموعة القيم ( ‪ ) 16,32,48,64‬تمثل نوع الرساله من‬


‫كونها استفهام أو تعجب ‪ ..‬الخ وعلى حسب ما تختار‬

‫‪ ‬ومجموعة القيم ( ‪ ) 0,256,512,768‬تعنى أى األزرار‬


‫‪YES‬أو ‪ NO‬أو ‪ CANCEL‬تريدها أن تكون اإلفتراضية‬
‫للمستخدم أى المضيئة‬

‫يمكن التعبير عن الرساله فى الكود بالقيمة مثل‬


‫وتظهر الرساله كما بالصورة السابقة‬
‫)"‪MsgBox("Text", 3 + 48 + 256, "Title‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 21‬‬

‫ملحق الدرس الرابع‬


‫الخاص بالرسائل‬
‫نستعرض هنا الرساله التى تحتوى على مربع ادخال بيان‬
‫قد يكون اسم ما‬
‫وقد يكون كلمه سر للدخول‬

‫فيما يختص بالجزئية األولى‬

‫يكون كود الرساله بهذا الشكل‬


‫وهذا الكود على سبيل المثال‬

‫)(‪Sub example‬‬
‫‪Dim result As String‬‬
‫)"‪result = InputBox("Text?", "Title‬‬

‫‪If result <> "" Then‬‬


‫‪End If‬‬
‫‪End Sub‬‬

‫فتكون الرساله بهذا الشكل‬


‫كما بالصورة التالية‬

‫حممود زكى الشريف‬


‫‪| P a g e 22‬‬

‫وإذا أفترضنا أننا نريد أن يجعل االكسل يظهر االسم او الكلمه التى ستكتب‬
‫داخل هذا المربع‬

‫فيكون الكود بهذا الشكل‬

‫)( ‪Sub example_1‬‬


‫‪Dim result As String‬‬

‫(" ‪result = InputBox("Text ?", "Title", "write the name‬‬

‫‪If result <> "" Then‬‬


‫‪MsgBox result‬‬
‫‪End If‬‬
‫‪End Sub‬‬

‫االختالف بين الكودين فى اضافة هذه الجملة‬

‫‪Msgbox result‬‬

‫وهى تعنى ظهور رساله تاليه بها الجملة التى تم ادخالها بالمربع‬

‫فتظهر الرساله‬
‫كما بالصورتيين التاليتين‬

‫حممود زكى الشريف‬


‫‪| P a g e 23‬‬

‫بعد كتابه االسم على سبيل المثال‬


‫تظهر الرساله بالشكل التالى‬

‫نأتى لجزئية كلمة السر‬


‫لقد جعلت الكود خاص بالمثال العملى المرفق‬
‫يختص بالدخول الى الشيت الثانى‬
‫وقد سجلت الكود بمحرر األكواد الخاص بحدث الشيت الثانى‬
‫أى داخل الصفحه نفسها من خالل الفيجوال بيسك‬

‫وان شاء الرحمن سوف نتطرق ألمر األكواد بشىء من التفصيل فى‬
‫الدروس القادمة وما هو الفرق بين الكود داخل موديول أو بحدث الشيت‬
‫أو بحدث المصنف بالكامل‬

‫والكود الخاص برساله كلمه السر‬


‫كالتالى‬

‫حممود زكى الشريف‬


‫‪| P a g e 24‬‬

‫فعند محاولة الدخول للشيت الثانى تظهر لنا الرساله كما بالصورة التالية‬

‫حممود زكى الشريف‬


‫‪| P a g e 25‬‬

‫وعند كتابة كلمه السر وهى‬


‫بسم هللا‬
‫بين الكلمتين مسافة واحده فقط‬

‫تظهر لنا رساله بهذا الشكل‬

‫وبالضغط على زر ‪ OK‬يتم الدخول الى الشيت الثانى‬

‫فى حال كوننا لم ندخل كلمه السر الصحيحة‬


‫تظهر لنا رساله توضح ذلك‬
‫وتنتقل مباشرة الى الشيت األول‬
‫والرساله كما بالشكل التالى‬

‫حممود زكى الشريف‬


‫‪| P a g e 26‬‬

‫مقدمة عن البرمجة بلغة ‪VBA‬‬


‫فى برنامج إكسيل‬

‫يتميز برنامج ‪ EXCEL‬بالواجهة الرسومية شانه‬


‫شأن كافة البرامج التى تعمل تحت نظام التشغيل‬
‫‪ Windows‬وهذه الواجهة الرسومية تخفى خلفها‬
‫األوامر التى أصدرها للحاسب والتى تكون عادة‬
‫مكتوبة بلغة من لغات الحاسب التى تعتمد على ما‬
‫يسمى بالبرمجة الحدثية ( أو البرمجة الموجهة‬
‫باألحداث ) ‪Events Programming‬‬
‫تعتمد على حدوث حدث بواسطة المستخدم – مثل‬
‫الضغط بزر الماوس األيسر على زر تخيلى على‬
‫الشاشة وبناء على هذا الحدث يتم تنفيذ مجموعة من‬
‫األوامر كما هو الحال فى وحدات الماكرو التى سبق‬
‫اإلشارة إليها ‪.‬‬

‫والواقع ان هذه األزرار تخفى خلفها التعليمات التى‬


‫تعطى للحاسب ‪ ،‬من خالل لغة الـ ‪Visual Basic‬‬
‫حيث يتم كتابتها بطريقة محددة وفقا لقواعد اللغة وكل‬
‫مجموعة وهذه التعليمات تسمى االكواد ‪Codes‬‬
‫وكل إجراء يرتبط تنفيذه بحدث معين يحدث من األكواد‬
‫او التعليمات تسمى إجراء ‪Procedure‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 27‬‬

‫من قبل المستخدم مثل الضغط بزر الماوس األيمن او‬


‫األيسر على زر او تحريك الماوس او فتح كائن أو‬
‫إغالقه‬
‫وتعتبر وحدات الماكرو احد األدوات المستخدمة‬
‫بواسطة ‪ Excel‬لكى يقوم المستخدم بتخزين مجموعة‬
‫من التعليمات او االكواد وتنفيذها من خالل حدث معين‬
‫دون الحاجة إلى كتابة هذه التعليمات بنفسه بواسطة‬
‫لغة ‪ Visual Basic‬ودون الحاجة الى تعلم قواعدها‪.‬‬

‫ونتناول فى هذا الفصل كيفية التعامل مع أوامر لغة‬


‫‪ Visual Basic‬من خالل برنامج ‪ Excel‬وذلك بهدف‬
‫التعرف على كيفية تصميم برامج تطبيقية قوية‬
‫باستخدام ‪ Excel‬تتمتع بخواص وإمكانيات متقدمة‬
‫يسهل من خاللها إدخال البيانات والتعامل معها‪.‬‬
‫نبدأ على بركه هللا تعالى‬
‫فى شرح بعض األمور الخاصة بالفيجوال بيسك اكسل‬
‫وهى فى غايه األهمية‬
‫كونها توضح لنا العديد من األمور المستخدمه فى األكواد‬
‫وبرجاء قرائتها بتأنى وبدقه إلستيعاب ما بها من نقاط هامه‬
‫جدا‬

‫حممود زكى الشريف‬


‫‪| P a g e 28‬‬

‫التعامل مع محرر الكود‬


‫فى الفيجوال بيسك اكسل‬

‫‪ – 1‬فتح ‪ Visual Basic‬من خالل برنامج األكسل ‪:‬‬

‫سبق اإلشارة الى كيفية فتح محرر األكواد راجع درس‬


‫الماكرو‬
‫‪ – 2‬إنشاء اإلجراء ‪: Procedure‬‬

‫اإلجراء ‪ Procedure‬هو مجموعة الجمل أو األوامر التي‬


‫يتم كتابتها لتنفيذ مهمة معينة ‪.‬‬
‫وإلنشاء اإلجراء يستخدم األمر ‪ sub‬ويعنى ذلك إنشاء‬
‫إجراء جديد ويعقب ذلك اسم اإلجراء ويكون من اختيار‬
‫المبرمج أو المستخدم فنجد أن البرنامج يكتب تلقائيا جملة‬
‫‪End sub‬‬
‫على أن يتم كتابة األوامر الخاصة باإلجراء بين جملتي‬
‫اإلعالن والنهاية ‪.‬‬

‫‪ – 3‬تنفيذ اإلجراء ‪:‬‬

‫يتم تنفيذ اإلجراء من خالل ورقة العمل بأحد طريقتين‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 29‬‬

‫األولى ‪ :‬من خالل تنفيذ أمر أدوات ‪ /‬ماكرو‪ /‬وحدات ماكرو‬


‫واختيار اإلجراء الذى تم حفظه ويتم حفظ اإلجراء ضمن‬
‫وحدات الماكرو باالسم الذى تم اختياره والضغط على زر‬
‫تشغيل ‪.‬‬
‫الثانية ‪ :‬عمل زر خاص لتنفيذ الماكرو باستخدام أشرطة‬
‫أدوات النماذج واختيار األمر إنشاء زر وتخصيص الزر‬
‫للماكرو المحدد ويتم تنفيذ الماكرو بالضغط على هذا الزر ‪.‬‬

‫‪ – 4‬المتغيرات ‪: Variables‬‬

‫يقصد بالمتغير مكان يتم حجزه فى ذاكرة الحاسب يتم فيه‬


‫تخزين قيمة او مجموعة من القيم لكى يتم استخدامها داخل‬
‫البرنامج ‪.‬‬
‫والبد من إعطاء اسم لكل متغير حتى يتسنى فيما بعد‬
‫استخدام هذا المتغير فى الوصول الى النتائج المطلوب‬
‫تحقيقها من البرنامج ‪.‬‬
‫وهناك شروط محددة يجب توافرها فى اسم المتغير وإال تم‬
‫رفضها من قبل البرنامج ‪.‬‬

‫شروط تسمية المتغيرات ‪:‬‬


‫‪ - 1‬يجب أال يبدأ اسم المتغير برقم وأن يبدأ بحرف ‪.‬‬
‫‪ - 2‬الحروف التى تلى الحرف األول يمكن أن تكون حروف‬
‫أو أرقام أو االثنين معا‪.‬‬
‫‪ - 3‬ال يجوز أن يحتوى اسم المتغير على مسافات أو نقطة‬
‫أو رموز خاصة مثل ( ؟ ‪ ..... ، /، * ،‬الخ ) ولكن يمكن‬
‫استخدام الشرطه السفليه ( _ ) ‪.‬‬
‫‪ - 4‬أال يكون اسم من األسماء المحجوزة مثل‬

‫حممود زكى الشريف‬


‫‪| P a g e 31‬‬

‫(‪ ...... dim, double, Else, ، if‬الخ )‬


‫‪ - 5‬يجب أال يكون مستخدما من قبل‪.‬‬
‫بمعنى لو هناك كود بإسم ‪ MZM‬فال يجوز كتابه كود‬
‫آخر داخل نفس المصنف بنفس االسم ‪.‬‬

‫وتنقسم المتغيرات إلى األنواع اآلتية ‪:‬‬

‫حجمه فى الذاكره‬ ‫معناه‬ ‫نوع البيان‬


‫واحد بايت‬ ‫عدد صحيح صغير‬ ‫‪Byte‬‬
‫‪ 2‬بايت‬ ‫عدد صحيح‬ ‫‪Short‬‬
‫‪ 4‬بايت‬ ‫عدد صحيح‬ ‫‪Integer‬‬
‫‪ 8‬بايت‬ ‫عدد صحيح طويل‬ ‫‪Long‬‬
‫‪ 4‬بايت‬ ‫عدد حقيقى صغير‬ ‫‪Single‬‬
‫‪ 8‬بايت‬ ‫عدد حقيقى طويل‬ ‫‪Double‬‬
‫‪ 8‬بايت‬ ‫تاريخ‬ ‫‪Date‬‬
‫‪ 16‬بايت‬ ‫صحيح أو كسر أو عمله‬ ‫‪Variant‬‬
‫‪ 2‬بايت‬ ‫قيمة منطقية‬ ‫‪Boolean‬‬
‫‪ 2‬بايت‬ ‫حرف واحد فقط‬ ‫‪Char‬‬
‫‪ 16‬بايت ‪ +‬بايت لكل حرف‬ ‫سلسلة من الحروف‬ ‫‪String‬‬

‫أمثلة على أسماء صحيحة للمتغيرات ‪:‬‬

‫‪– mynameisyasser – Mahmoud – Salma‬‬


‫‪Y2011 - Howareyou‬‬

‫أمثلة على أسماء غير صحيحة للمتغيرات ‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 31‬‬

‫‪- Howareyou? - Good Morning - Ali Gomaa‬‬


‫‪1210‬‬

‫‪ – 5‬الثوابت ‪: Constants‬‬

‫عرضنا فيما سبق ما يخص المتغيرات وأنواعها وشروط تسميتها‬


‫‪ ،‬والثوابت هى مثل المتغيرات والفرق الوحيد بينهما هو أن‬
‫الثوابت ال تتغير قيمتها أثناء عمل البرنامج وأيضا نجد أن شروط‬
‫تسمية الثوابت هى نفس شروط تسمية المتغيرات وأيضا أنواع‬
‫الثوابت هى نفس أنواع المتغيرات ‪.‬‬

‫‪ – 6‬اإلعالن عن المتغيرات ‪:‬‬

‫اإلعالن عن المتغير هو أن نخبر لغة ‪ visual basic‬عن اسم‬


‫المتغير ونوع البيان وهناك طريقة لإلعالن عن المتغيرات وهى‬
‫بكلمة ‪. dim‬‬
‫وهناك أساليب مختلفة لعملية اإلعالن وهى كالتالى ‪:‬‬

‫‪ - 1‬اإلعالن عن متغير واحد فقط فى كل سطر من سطور اإلعالن‬


‫مثل ‪:‬‬
‫‪Dim a as integer‬‬
‫‪Dim b as single‬‬

‫‪ - 2‬اإلعالن عن أكثر من متغير فى سطر اإلعالن مثل ‪:‬‬


‫‪Dim a, b as integer‬‬

‫‪ - 3‬اإلعالن عن متغير وتخصيص قيمة له فى سطر اإلعالن ‪:‬‬


‫‪Dim C as integer = 7‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 32‬‬

‫‪ - 4‬اإلعالن عن متغيرات ليست من نفس النوع وإعطاء قيمة لها‬


‫فى نفس السطر‬
‫‪Dim X as integer = 9 , Y as string = "Mr. Mzm‬‬
‫" ‪EL-Shrief‬‬

‫‪ - 5‬اإلعالن عن متغير وتخصيص قيمة له من ناتج معادلة‬


‫رياضية فى نفس السطر‬
‫‪Dim X as integer = a + b‬‬

‫‪ – 7‬تخصيص القيم للمتغيرات ‪:‬‬

‫عند تخصيص قيمة للمتغير فإن هذه القيمة تأخذ أحد األشكال‬
‫التالية ‪:‬‬
‫‪ - 1‬قيمة مجردة ‪X = 3‬‬
‫‪X=Y‬‬ ‫‪ - 2‬متغير آخر‬
‫‪ - 3‬عملية حسابية ‪X = a + b‬‬

‫مالحظات ‪:‬‬

‫‪ ‬عند اإلعالن عن متغير ولم يتم وضع قيمة له فإنه يتم‬


‫افتراض قيمة له كاآلتي‪:‬‬
‫‪ - 1‬المتغيرات الرقمية تأخذ الرقم صفر‪.‬‬
‫‪ - 0‬المتغير المنطقي يأخذ القيمة ‪. False‬‬
‫‪ - 3‬المتغيرات الحرفية تأخذ قيمة فارغة " " ‪.‬‬
‫‪ – 1‬المتغير ‪ date‬يأخذ التاريخ ‪. 1911/ 10 /31‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 33‬‬

‫‪ ‬القيمة الحرفية "" ال تساوى القيمة الحرفية " " حيث أن‬
‫األولى قيمة فارغة أما القيمة الثانية فهى عبارة عن‬
‫مجموعة من المسافات والمسافة لها قيمة‪.‬‬
‫‪ ‬يمكن جمع األرقام وأيضا النصوص وذلك باستخدام عالمات‬
‫الربط & أو عالمة ‪+‬‬

‫مثال‬
‫‪Dim X , Y , Z as string‬‬
‫" ‪X = " Deiaa‬‬
‫" ‪Y = " Mahmoud‬‬
‫‪Z=X+Y‬‬

‫وعلى ذلك تكون قيمة ‪ Z‬هى‬


‫‪Deiaa Mahmoud‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 34‬‬

‫األوامر والدوال فى لغة الـ ‪Visual Basic‬‬

‫سنركز فى هذا الدرس على عدد من الجمل والدوال‬


‫ومن أهم هذه الجمل والدوال ‪:‬‬
‫‪ – 1‬جملة ‪If – then‬‬
‫‪ – 2‬جملة ‪Select Case‬‬
‫‪ – 3‬جملة ‪For – next‬‬
‫‪ – 4‬جملة ‪Do while loop‬‬
‫‪ – 5‬جملة ‪Do loop while‬‬
‫‪ – 6‬دالة صندوق الرسائل ‪ Message Box‬وقد سبق‬
‫الحديث عنها بالدروس السابقة‬
‫ولكننا سنتحدث أيضا عنها بهذا الدرس ‪.‬‬
‫‪ – 7‬دالة صندوق اإلدخال ‪Input Box‬‬
‫‪ – 8‬إنشاء الدوال الخاصة‬

‫الجملة الشرطية ‪If – then‬‬

‫تستخدم هذه الجملة فى حالة وجود احتماليين منطقيين‬


‫كنتيجة لوجود شرط معين ‪.‬‬
‫وتأخذ هذه الدالة األشكال التالية‪:‬‬

‫‪ – 1‬جملة ‪ IF‬ذات السطر الواحد‬

‫حممود زكى الشريف‬


‫‪| P a g e 35‬‬

‫أمر ‪ Then‬الشرط ‪IF‬‬


‫مثال ‪:‬‬
‫‪If x = 5 then y = x‬‬

‫‪ – 2‬جملة ‪ IF‬ذات السطور المتعددة‬

‫‪ Then‬الشرط ‪IF‬‬
‫األوامر‬
‫‪End IF‬‬
‫مثال ‪:‬‬
‫‪If x = 5 then‬‬
‫‪Y=x‬‬
‫‪End IF‬‬
‫نالحظ اآلتى ‪:‬‬

‫‪ -‬ال يتم كتابه اى شىء بعد ‪Then‬‬


‫‪ -‬أنه تم اغالق جملة ‪ IF‬بكلمة ‪End IF‬‬

‫‪ – 3‬جملة ‪If – then – else‬‬

‫‪ Then‬الشرط ‪IF‬‬
‫مجموعة األوامر‬
‫‪Else‬‬
‫مجموعة األوامر‬
‫‪End IF‬‬
‫مثال ‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 36‬‬

‫‪If x = 5 then‬‬
‫‪Y=x‬‬
‫‪Else‬‬
‫‪Y=z‬‬
‫‪End If‬‬

‫نالحظ اآلتى ‪:‬‬

‫ال يتم كتابة أى شىء بعد ‪Then‬‬ ‫‪-‬‬


‫إذا تحقق الشرط يتم تنفيذ األوامر الموجودة فى (‬ ‫‪-‬‬
‫السطر ‪ /‬السطور ) التى تلى كلمة ‪Then‬‬
‫فى حالة عدم تحقق الشرط يتم تنفيذ األوامر الموجودة‬ ‫‪-‬‬
‫فى ( السطر ‪ /‬السطور ) التى تلى كلمة ‪Else‬‬
‫يتم إغالق جملة ‪ IF‬بكلمة ‪End IF‬‬ ‫‪-‬‬

‫‪ – 4‬جملة ‪If – Then - Else if – Else‬‬

‫‪ Then‬الشرط ‪IF‬‬
‫مجموعة األوامر‬
‫‪Else IF‬‬
‫مجموعة األوامر‬
‫‪Else‬‬
‫مجموعة األوامر‬
‫‪End IF‬‬
‫نالحظ التالى ‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 37‬‬

‫ذكرنا سابقا أن جملة ‪ IF‬تستخدم فى حالة وجود‬


‫احتماليين منطقيين كنتيجة لوجود شرط معين ولكن‬
‫هذه الحالة الرابعة سوف تحتمل أكثر من شرط وبالطبع‬
‫كل شرط له احتمالين إما أن يتحقق أو لن يتحقق‬
‫وسوف نالحظ اآلتى فى هذه الحالة‪:‬‬

‫‪ -‬ال يتم كتابة أى شىء بعد كلمة ‪Then‬‬

‫‪ -‬إذا تحقق الشرط يتم تنفيذ األوامر الموجودة فى )‬


‫السطر ‪ /‬السطور ( التى تلى كلمة ‪Then‬‬

‫‪ -‬فى حالة عدم تحقق الشرط ال يتم تنفيذ األوامر التى تلى‬
‫كلمة ‪ Then‬ويتم االنتقال الختبار الشرط الثانى‬
‫المكتوب بعد كلمة ‪ Else IF‬ويلي الشرط مباشرة كلمة‬
‫‪ Then‬أيضا ‪.‬‬

‫‪ -‬إذا لم يتحقق الشرط الثانى ووجد شرط ثالث يتم كتابته‬


‫بعد كلمة ‪ Else IF‬أيضا بنفس الطريقة السابقة فى‬
‫الخطوة السابقة ‪.‬‬

‫‪ -‬وفى حالة عدم تحقق الشروط جميعا يتم تنفيذ األوامر‬


‫الموجودة فى ( السطر‪ /‬السطور) التى تلى كلمة ‪Else‬‬

‫‪ -‬تأتى كلمة ‪ Else‬فى نهاية كافة الشروط وهى آخر‬


‫احتمال فى الجملة حيث يتم إغالق الجملة بعدها نهائيا‬
‫بكلمة ‪ Else IF‬ويجب مالحظة أال يسبق سطر ‪Else‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 38‬‬

‫أى سطر به كلمة ‪ Else IF‬وإال تسبب فى خطأ جملة‬


‫‪ IF‬بالكامل ‪.‬‬

‫‪ -‬يجب مالحظة أننا فى إطار جملة ‪ IF‬واحدة وأن كلمة‬


‫‪ Else‬ليست مثل ‪ Else IF‬وأيضا ‪ IF‬ليست مثل‬
‫‪ Else IF‬حيث أن كل هذه الكلمات تدخل ضمن جملة‬
‫‪ IF‬الرئيسية وبالتالى فإنه يتم إغالق جملة ‪ IF‬بكلمة‬
‫‪ End IF‬واحدة فقط‪.‬‬

‫مثال ‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 39‬‬

‫‪ – 5‬جملة ‪ IF‬المتداخلة (‪) Nested if‬‬

‫‪ Then‬الشرط ‪IF‬‬
‫‪ Then‬الشرط ‪IF‬‬
‫مجموعة األوامر‬
‫‪Else‬‬
‫مجموعة األوامر‬

‫حممود زكى الشريف‬


‫‪| P a g e 41‬‬

‫‪End IF‬‬
‫‪Else‬‬
‫مجموعة األوامر‬
‫‪End IF‬‬

‫نالحظ التالى ‪:‬‬

‫هذه الحالة مختلفة ألنه يوجد جملتى ‪ IF‬وسوف يتم إغالقهما‬


‫بكلمتى ‪End IF‬‬

‫نشرح هذه الحالة الخامسة بالمثال التالى ‪ :‬وهو مثال هام‬

‫إذا أردنا اختبار اسم المستخدم وكلمة المرور عند الدخول‬


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

‫ويكون الكود كالتالى ‪:‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 41‬‬

‫الجملة الشرطية ‪Select Case‬‬

‫المثال السابق وهو قبل األخير الذى ذكرناه فى جملة‬


‫‪ If - then - elseif – else‬والخاص بتقديرات الطلبة‬
‫يمكن تطبيقه بشكل أفضل وأسهل بكثير باستخدام جملة‬
‫‪Select Case‬‬
‫سوف نقوم بتطبيق المثال مرة أخرى باستخدام جملة‬
‫‪ Select case‬ثم نقوم بالتعليق على المثال وشرح‬
‫المالحظات‪:‬‬
‫حممود زكى الشريف‬
‫‪| P a g e 42‬‬

‫الشرح ‪:‬‬

‫سنتحدث عن ما يخص جملة ‪Select case‬‬


‫‪ - 1‬بدأت الجملة بكلمة ‪ Select case‬ثم اسم المتغير‬
‫الذى سيتم تتبع حالته ‪.‬‬
‫‪ - 2‬الحالة األولى قيمة المتغير التى تم إدخالها فى‬
‫صندوق النصوص هى بين صفر ‪94 ،‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 43‬‬

‫‪ - 3‬ظهور صندوق رسالة يفيد أن الطالب راسب‬


‫‪ - 9‬يتم إدخال قيمة كل حالة وهكذا فى جميع الحاالت‬
‫بنفس الطريقة‬

‫المالحظات ‪:‬‬

‫‪ - 1‬تبدأ الجملة بكلمة ‪ Select case‬وتنتهى بجملة‬


‫‪End select‬‬
‫‪ - 2‬تم وضع الجملة اآلتية فى بداية الكود‬
‫‪On Error GoTo mistake‬‬
‫ومعناها‬
‫ومعناها أنه فى حالة وجود أى خطأ يتم االنتقال إلى العنوان‬
‫‪ Mistake‬وذلك تحسبا لقيام المستخدم بإدخال قيمة نصية‬
‫وبالتالى يصعب اختبارها وفى هذه الحالة سوف يتم نقل‬
‫الكود للخطوة األخيرة والتى يظهر بها صندوق نص يفيد أن‬
‫المستخدم لم يدخل قيمة عددية وعليه إعادة إدخال قيمة‬
‫عددية ليتم اختبارها‪.‬‬

‫وفى هذه الحالة سيتم إعادته مرة أخرى للبداية إلى العنوان‬
‫‪Start‬‬
‫‪ - 3‬يمكن تسمية العناوين بأى اسم‬
‫مثال‬
‫(‪ ) X – Y – Z – Yasser‬ولكن يفضل أن يكون‬
‫االسم معبرا ‪.‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 44‬‬

‫‪ - 1‬نالحظ أننا وضعنا مدى فى قيم المتغير فى خطوات‬


‫الجملة وهذا ليس شرطا بل يمكن وضعه قيمة قيمة ولكن‬
‫سيكون ذلك تطويال ال طائل منه مثل التالى‬
‫‪Case 1‬‬
‫‪Case 2‬‬
‫‪Case 3‬‬

‫‪Case 100‬‬

‫الدالة ‪Inputbox‬‬
‫تستخدم فى إدخال بيانات بواسطة المستخدم من خالل مستطيل يطلب منه إدخال البيان‬
‫المطلوب ‪.‬‬
‫مثل‬
‫إدخال معدل الضريبة الكلى يتم حساب الضرائب التي تستقطع من العاملين‬
‫أو إدخال الراتب االساسى لموظف حساب صافى مستحقاته بعد إضافة الحوافز والمكافآت‬
‫وخصم الضريبة واالستقطاعات‬

‫وتأخذ هذه الدالة الشكل التالي‪:‬‬

‫الشكل العام للدالة ‪Inputbox‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 45‬‬

‫مثال ‪:‬‬

‫التعامل مع الكائنات‬

‫الكائنات ‪Objects‬‬
‫الكائنات هي المكونات األساسية الى برنامج وهى األدوات‬
‫التي تحتوى على البيانات او تستخدم للتعامل مع البيانات‬
‫مثال ذلك الجداول والنماذج واالستعالمات والتقارير فى‬
‫‪Access‬‬
‫حممود زكى الشريف‬
‫‪| P a g e 46‬‬

‫ويتضمن ‪ Excel‬الكائنات التالية ‪:‬‬

‫‪ – 1‬التطبيق ‪ Application‬ويتمثل فى برنامج اإلكسيل‬


‫نفسه ‪.‬‬
‫‪ – 2‬المصنف ‪ Work Book‬ويتمثل فى كتاب العمل الذى‬
‫يتم التعامل مع البيانات من خالله‪.‬‬
‫‪ - 3‬ورقة العمل ‪ Work Sheet‬وهى التى تحتوى على‬
‫مجموعة البيانات‬
‫‪ – 4‬النطاق ‪ Range‬ويتضمن مجموعة من الخاليا ‪Cells‬‬
‫وهى التى تحتوى على بيان واحد من البيانات سواء كان‬
‫بيان نصى أو رقمى أو معادلة أو دالة ويكتب النطاق على‬
‫النحو التالى‬
‫)‪ Range(a1:c5‬أى نطاق الخاليا من ‪ a1‬الى ‪c5‬‬
‫ولكل كائن من هذه الكائنات خصائص معينة ‪Properties‬‬
‫مثل االسم ‪ Name‬والعنوان ‪ Caption‬ومجموعة من‬
‫األساليب ‪ Methods‬التي تستخدم في تنفيذ أمر معين على‬
‫الكائن كما أن الكائن قد يقع عليه حدث يؤثر فى سلوكه ورد‬
‫فعله‬
‫كائن التطبيق ‪Application‬‬
‫)(‪Sub JASMEN1‬‬
‫"‪Application.Caption = "JASMEN MAHMOUD ELSHRIEF‬‬
‫‪End Sub‬‬

‫يقوم الكود بتوظيف الخاصية ‪ Caption‬على كائن التطبيق‬


‫أي أن هذه الخاصية تقوم بتغيير االسم العام للبرنامج فبدال‬
‫من كلمة مايكرسوفت سيظهر‬
‫"‪"JASMEN MAHMOUD ELSHRIEF‬‬

‫حممود زكى الشريف‬


| P a g e 47

Sub JANA2 ()
Application.DisplayFormulaBar = False
End Sub

‫ بإخفاء‬DisplayFormulaBar ‫تقوم هذه الخاصية‬


‫ وبالمقابل إظهاره عند‬False ‫شريط الصيغ عند استخدام‬
TRUE ‫استخدام‬
Sub JOUMANA3 ()
Application.DisplayFullScreen = True
End Sub

‫ بجعل‬DisplayFullScreen ‫تقوم هذه الخاصية‬


‫التطبيق في وضع ملء الشاشة وللرجوع طبعا يجب ان‬
False ‫نجعل القيمة‬
Sub MZM4 ()
Application.DisplayRecentFiles = False
End Sub

‫ بعدم‬DisplayRecentFiles ‫تقوم هذه الخاصية‬


‫عرض المستندات األخيرة في كائن تطبيق اكسيل وإذا أردنا‬
TRUE ‫إستعراضها طبعا نجعلها تاخد القيمة‬

Sub MZM5 ()
Application.WindowState = xlMaximized
End Sub

‫ بعرض البرنامج‬WindowState ‫تقوم هذه الخاصية‬


‫فى حالة التكبير‬
Sub MZM6 ()
Application.WindowState = xlMinimized
End Sub

‫ بعرض البرنامج‬WindowState ‫تقوم هذه الخاصية‬


‫فى حالة التصغير‬

‫حممود زكى الشريف‬


| P a g e 48

Sub MZM7 ()
Application.WindowState = xlNormal
End Sub

‫ بعرض البرنامج‬WindowState ‫تقوم هذه الخاصية‬


‫فى حالة العرض العادى‬

Worksheet ‫كائن ورقة العمل‬


Sub MZM8 ()
Worksheets("sheet1").Visible = False
End Sub

sheet1 ‫يقوم الكود السابق بإخفاء ورقة العمل المسماه‬


TRUE ‫وإذا أردنا إظهار الشيت نجعل القيمة‬

Sub MZM9 ()
Worksheets(1).Name = "sheet1"
End Sub

‫حممود زكى الشريف‬


‫‪| P a g e 49‬‬

‫يقوم الكود بإعادة تسمية الورقة ‪ 1‬في ترتيب اكسيل بـ ‪sheet1‬‬


‫)( ‪Sub MZM10‬‬
‫‪Worksheets("sheet1").Delete‬‬
‫‪End Sub‬‬

‫يقوم الكود بحذف الورقة المسماه ‪sheet1‬‬


‫)( ‪Sub MZM11‬‬
‫‪Worksheets(1).Activate‬‬
‫‪End Sub‬‬

‫يقوم الكود بتنشيط الورقة المسماه ‪sheet1‬‬

‫)( ‪Sub MZM12‬‬


‫‪Worksheets.Add‬‬
‫‪End Sub‬‬

‫يقوم الكود بإضافة ورقة جديدة‬


‫)( ‪Sub MZM13‬‬
‫‪Worksheets(3).Copy‬‬
‫‪End Sub‬‬

‫يقوم الكود بنسخ الورقة الثالثة ضمن ترتيب ورقات المصنف‬

‫كائن المدى ‪ /‬النطاق ‪Range‬‬


‫نستعرض كائن من نوع النطاق أو ما يسمى بالمدى أو المجال وهو‬
‫األكثر شيوعا أي أن أغلب األكواد تشير بكثرة لهذا النوع من الكائنات‬

‫)( ‪Sub MZM14‬‬


‫‪Range("d2:i10").Select‬‬
‫‪End Sub‬‬

‫يقوم الكود بتحديد المجال المشار إليه بين القوسين‬


‫)( ‪Sub MZM15‬‬
‫‪Range("d2:i10").Columns(2).Select‬‬
‫‪End‬‬ ‫‪Sub‬‬
‫زكى الشريف‬ ‫حممود‬
‫‪| P a g e 51‬‬

‫يقوم الكود بتحديد العمود الثاني بالمجال المشار إليه بين قوسين‬
‫)( ‪Sub MZM16‬‬
‫‪Range("b10:f15").Columns(2).Value = 0‬‬
‫‪End Sub‬‬

‫يقوم الكود بكتابة قيمة صفر في العمود الثاني من المجال المحدد بين‬
‫القوسين‬
‫)( ‪Sub MZM17‬‬
‫‪Range("c5:c10").Rows(1).Value = 100‬‬
‫‪End Sub‬‬

‫يقوم الكود بكتابة قيمة ‪ 122‬في الصف األول من المجال المحدد بين‬
‫القوسين وهو هنا الخلية ‪C5‬‬
‫)( ‪Sub MZM18‬‬
‫‪Range("d2:i10").Cells(2, 3).Select‬‬
‫‪End Sub‬‬
‫يقوم الكود بتحديد الخلية الواقعة في الصف الثاني من العمود الثالث‬
‫داخل المجال المحدد بين القوسين وهي الخلية ‪F3‬‬

‫)( ‪Sub MZM19‬‬


‫‪Range("f10:i15").Cells(3, 2).Value = 200‬‬
‫‪End Sub‬‬

‫يقوم الكود بكتابة قيمة ‪ 022‬بالخلية الواقعة في الصف الثالث من العمود‬


‫الثاني داخل المجال المحدد بين القوسين وهي هنا الخلية ‪G12‬‬
‫)( ‪Sub MZM20‬‬
‫‪Worksheets(3).Range("f1:h5").Value = 100‬‬
‫‪End Sub‬‬

‫يقوم الكود بكتابة قيمة ‪ 122‬في المجال المحدد من الورقة الثالثة من‬
‫أوراق المصنف‬

‫حممود زكى الشريف‬


‫‪| P a g e 51‬‬

‫)( ‪Sub MZM21‬‬


‫‪Range("d2:i10").Clear‬‬
‫‪End Sub‬‬

‫يقوم الكود بمسح محتويات المجال المشار إليه بين قوسين‬


‫)( ‪Sub MZM22‬‬
‫‪Worksheets(3).Range("a1:c10").Font.Bold = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار‬


‫خاصية ‪ Bold‬سماكه الخط‬
‫)( ‪Sub MZM23‬‬
‫‪Worksheets(3).Range("a1:c10").Font.Italic = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار‬


‫خاصية ‪ Italic‬إمالة الخط‬
‫)( ‪Sub MZM24‬‬
‫‪Worksheets(3).Range("a1:c10").Font.Underline = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار‬


‫خاصية ‪ Underline‬وضع خط تحت البيانات‬

‫)( ‪Sub MZM25‬‬


‫"‪Worksheets(3).Range("a1:c10").Font.Name = " Arabic Typesetting‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار نوع‬


‫الخط ‪Arabic Typesetting‬‬

‫)( ‪Sub MZM26‬‬


‫‪Worksheets(3).Range("a1:c10").Font.Size = 18‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 52‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف قم باختيار حجم‬


‫الخط ‪19‬‬

‫)( ‪Sub MZM27‬‬


‫‪Worksheets(3).Range("a1:c10").Columns(1).Font.Size = 18‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالعمود األول‬


‫فقط قم باختيار حجم الخط ‪19‬‬

‫)( ‪Sub MZM28‬‬


‫‪Worksheets(3).Range("a1:c10").Rows.Font.Bold = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف لجميع صفوف‬


‫المجال قم باختيار خاصية ‪Bold‬‬

‫)( ‪Sub MZM29‬‬


‫‪Worksheets(3).Range("a1:c10").Rows(3).Font.Bold = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف بالصف الثالث‬


‫فقط قم باختيار خاصية ‪Bold‬‬

‫)( ‪Sub MZM30‬‬


‫‪Range("f20:i25").Cells.Font.Italic = True‬‬
‫‪End Sub‬‬

‫عند المجال المحدد من الورقة الثالثة في أوراق المصنف بجميع الخاليا‬


‫قم باختيار خاصية ‪Italic‬‬

‫)( ‪Sub MZM31‬‬


‫"‪ActiveCell.Formula = "=C1+D2‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 53‬‬

‫عند الخلية الحالية النشطة اكتب المعادلة المذكورة‬

‫)( ‪Sub MZM32‬‬


‫"]‪Range("h10").FormulaR1C1 = "=r[-1]c[-1]+r[1]c[1‬‬
‫‪End Sub‬‬

‫إلدراج المعادلة بمقدار إزاحة اقل من صف وعمود لليمين ‪ +‬إزاحة اكبر‬


‫من صف وعمود لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة‬
‫‪G9+I11‬‬

‫)( ‪Sub MZM33‬‬


‫"]‪Range("h10").FormulaR1C1 = "=rc[1]+rc[2‬‬
‫‪End Sub‬‬

‫إلدراج المعادلة بمقدار إزاحة أكبر من صف وعمود لليسار ‪ +‬إزاحة اكبر‬


‫من صفين عمودين لليسار للخلية المختارة وبالتالي سيكون الناتج معادلة‬
‫‪I10+J10‬‬

‫)( ‪Sub MZM34‬‬


‫‪Worksheets(3).Range("H10").Offset(1, 2).Value = 100‬‬
‫‪End Sub‬‬

‫إلدراج القيمة ‪ 122‬بمقدار إزاحة زائد عمودين لليسار وصف من‬


‫الخلية المختارة وهي ستكون الخلية ‪J11‬‬

‫الحظ االختصار في األكسيل فبدال من األسطر المتعددة يمكن اإلشارة‬


‫للمجال المختار بهذه الجملة ‪WHIT‬‬
‫وهي جملة تستخدم لتخصيص المجال أي عند المجال المعين بالخاصية‬
‫المطلوبة افعل كذا‬

‫)( ‪Sub MZM‬‬


‫‪With Worksheets(3).Range("A1:h10").Font‬‬
‫‪.Bold = True‬‬
‫‪.Italic = True‬‬
‫‪.Underline = True‬‬
‫"‪.Name = "ARIAL‬‬
‫زكى الشريف‬ ‫‪ = 20‬حممود‬
‫‪.Size‬‬
‫‪End With‬‬
‫‪End Sub‬‬
‫‪| P a g e 54‬‬

‫استخدمنا خاصية ‪ WHIT‬لتخصيص المجال المحدد بالخاصية‬


‫المطلوبة ‪ FONT‬لعمل ما يلي من أوامر بعد سطر التخصيصويجب‬
‫إنهاء جملة التخصيص ‪ WHIT‬بجملة ‪End With‬‬

‫)( ‪Sub MZM‬‬


‫‪Worksheets(5).UsedRange.Font.Size = 16‬‬
‫‪End Sub‬‬

‫تستخدم هذه الخاصية عند وجود بيانات متقطعة فهي تشير لكامل المجال‬
‫المستخدم‬

‫)( ‪Sub MZM‬‬


‫‪Worksheets(3).Range("a1").CurrentRegion.Font.Size = 16‬‬
‫‪End Sub‬‬

‫تستخدم هذه الخاصية عند وجود بيانات متقطعة أي البيانات المتصلة‬


‫فقط بالمجال المذكور هي التي سيتم تنفيذ المطلوب عليها‬

‫)( ‪Sub MZM‬‬


‫‪Worksheets(3).Range("C2:G10").BorderAround ColorIndex:=5‬‬
‫‪End Sub‬‬

‫يقوم الكود بإحاطة المجال المختار بحدود باللون األزرق‬

‫)( ‪Sub MZM‬‬


‫‪Worksheets(3).Range("C2:G10").Interior.ColorIndex = 6‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 55‬‬

‫يقوم الكود بتلوين المجال المحدد باللون األصفر‬

‫وعلى ذكر ‪ ColorIndex‬قد يتساءل البعض كيف يمكن معرفة رقم‬


‫اللون المختار ؟‬
‫وفيما يلى جدول بالرقم الخاص بكل لون قدر المستطاع‬

‫مثال‬
‫)( ‪Sub MZM‬‬
‫)"‪With Cells(1, "D‬‬
‫" منتديات أوفيسنا التعليمية" = ‪.Value‬‬
‫‪.Font.Bold = True‬‬
‫"‪.Font.Name = "Arial‬‬
‫‪.Font.Size = 72‬‬
‫)‪.Font.Color = RGB(0, 0, 250‬‬
‫‪.Columns.AutoFit‬‬
‫)‪.Interior.Color = RGB(0, 255, 255‬‬
‫‪.Borders.Weight = xlThick‬‬
‫)‪.Borders.Color = RGB(0, 0, 255‬‬
‫‪End With‬‬
‫‪End Sub‬‬
‫حممود زكى الشريف‬
‫‪| P a g e 56‬‬

‫بالكود السابق‬

‫استخدمنا الخاصية ‪ Cells‬لإلشارة إلى الخلية األولى من العمود ‪D‬‬

‫شرح الكود ‪:‬‬

‫عند الخلية األولى من العمود ‪ D‬أعطها قيمة نصية " منتديات‬ ‫‪-‬‬
‫أوفيسنا التعليمية"‬
‫تغليظ الخط قم باستخدام نوع الخط ‪Arial‬‬ ‫‪-‬‬
‫حجم الخط ‪20‬‬ ‫‪-‬‬
‫اختيار اللون األزرق‬ ‫‪-‬‬
‫استخدم خاصية االحتواء المناسب لضبط النص داخل الخلية‬ ‫‪-‬‬
‫جعل الخلفية باللون التركوازى‬ ‫‪-‬‬
‫إحاطة الخلية برسم حد ذي حد غليظ‬ ‫‪-‬‬
‫اختيار للحد لونا أزرق‬ ‫‪-‬‬
‫قم بإنهاء جملة ‪WITH‬‬ ‫‪-‬‬

‫ويمكن اإلشارة هنا إلى أن أنواع الـ ‪ .Borders.Weight‬هي كما‬


‫يلي‬

‫خط رفيع جدا‬ ‫‪xlHairline‬‬

‫خط رفيع‬ ‫‪xlThin‬‬

‫خط متوسط‬ ‫‪xlMedium‬‬

‫خط غليظ‬ ‫‪xlThick‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 57‬‬

‫)( ‪Sub MZM‬‬


‫)"‪With Range("A1:A5,H1:H5‬‬
‫"‪.Value = "MAHMOUD ELSHRIE‬‬
‫‪.Font.Bold = True‬‬
‫‪. Columns.AutoFit‬‬
‫‪End With‬‬
‫‪End Sub‬‬

‫بالكود أعاله ‪:‬‬

‫تم اإلشارة لمجالين مختلفين مع جملة ‪WITH‬‬ ‫‪-‬‬


‫تم كتابة قيمة نصية ‪MAHMOUD ELSHRIE‬‬ ‫‪-‬‬
‫تم اختيار نوع الخط الغليظ‬ ‫‪-‬‬
‫تم عمل احتواء مناسب لألعمدة‬ ‫‪-‬‬
‫ثم إنهاء جملة ‪WITH‬‬ ‫‪-‬‬

‫جميع ما سبق الحديث عنه بالنسبة للمدى كان محدد ومعلوم ‪ ،‬أي أن‬
‫األبعاد ثابتة ومحددة مثل‬
‫الخلية ‪A1‬‬
‫المدى ‪A1 : H10‬‬

‫فماذا لو كان المجال المطلوب العمل ضمنه هو مجال متغير األبعاد ؟‬


‫إذا يجب علينا التعرف على ما يلي‬
‫جمل التخصيص ‪SET AND LET‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 58‬‬

‫كالهما تستخدم لتخصيص قيم المتغيرات المعلن عنها ككائنات والفرق‬


‫بينهما في أن جملة ‪ SET‬تستخدم لتخصيص المتغيرات من نوع كائن‬

‫أما ‪ LET‬فتستخدم لتخصيص القيم الرقمية أو الحرفية للمتغيرات‬


‫األخرى‬

‫مثال على جملة ‪ SET‬ألنها هى التى تهمنا اآلن ‪:‬‬

‫)(‪Sub MZM‬‬
‫‪Dim R1 As Range‬‬
‫‪Dim R2 As Range‬‬
‫‪Dim MAHMOUD As Range‬‬
‫)"‪Set R1 = Range("B2:C5‬‬
‫)"‪Set R2 = Range("F2:J5‬‬
‫)‪Set MAHMOUD = Union(r1, r2‬‬
‫‪With MAHMOUD‬‬
‫" ‪.Value = "MAHMOUD ELSHRIEF‬‬
‫‪.Font.Size = 20‬‬
‫‪.Font.Bold = True‬‬
‫‪.Font.Italic = True‬‬
‫‪.Font.ColorIndex = 5‬‬
‫‪.Borders.Weight = xlMedium‬‬
‫)‪.Borders.Color = RGB(0, 255, 255‬‬
‫‪.Interior.ColorIndex = 6‬‬
‫‪.Columns.AutoFit‬‬
‫‪End With‬‬
‫‪End Sub‬‬

‫السطر األول والثاني والثالث إعالن عن المتغيرات على أنها من النوع‬


‫‪RANGE‬‬

‫السطر الرابع والخامس تخصيص المجال المذكور للمجال األول والثاني‬


‫‪ R2،R1‬وذلك باستخدام جملة ‪Set‬‬

‫السطر السادس تخصيص المجال ‪ MAHMOUD‬الذي نريده أن يعبر‬


‫عن دمج المجالين ‪ R2،R1‬وذلك باستخدام األمر ‪Union‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 59‬‬

‫والفائدة من ذلك كله ت ٌكمن في السطر السابع ‪ ،‬فعند تخصيص المجال‬


‫‪ MAHMOUD‬كمتغير من نوع نطاق ليعبر عن المجالين ‪R2،R1‬‬
‫أمكن لنا أن نقرنه بالجملة ‪ WHIT‬ليأخذ الخصائص المطلوبة في األسطر‬
‫الباقية من الكود‬

‫مثال آخر ‪:‬‬

‫)( ‪Sub MZM‬‬


‫‪Dim Z As Worksheet‬‬
‫)‪Set Z = Application.Worksheets(2‬‬
‫" منتديات أوفيسنا التعليمية" = ‪Z.Name‬‬
‫‪End Sub‬‬

‫هنا تم تخصيص الكائن من ورقة عمل للمتغير ‪ Z‬وبالتالي عند استخدام‬


‫خاصية ‪ Name‬مع المتغير ‪ Z‬أمكن تغيير أسم الورقة‬

‫باختصار فإن المتغير ‪ Z‬بفضل الجملة ‪ SET‬يعبر عن كائن ورقة العمل‬


‫المحددة‬

‫المدى الديناميكى‬

‫ال يزال الحديث متصال بكائن النطاق ‪ RANGE‬والذى استغرق منا تقريبا‬
‫معظم الحاالت‬

‫حممود زكى الشريف‬


‫‪| P a g e 61‬‬

‫ولكن المالحظ فيما سبق أننا قد نحتاج من حين ألخر لزيادة أو إنقاص حجم‬
‫مساحة العمل أى المدى الذي نريد العمل ضمنه ‪ ،‬وبالتالي نضطر لتعديل‬
‫أبعاد المدى من داخل الكود‬

‫فماذا لو كان مجال العمل المدى متحرك أى ديناميكى ؟‬

‫عندها يصبح الكود والعمل المنجز أكثر فعالية ومفعما بالحيوية‬

‫فمثال قد نعد تنسيقات لجدول بحجم ضخم ولكن ال نستخدم منه إال الجزء‬
‫اليسير وينتج عن ذلك‬

‫إرهاق لموارد البرنامج وبطء ملحوظ في كفاءة ملف العمل‬

‫والكود التالي يلخص فكرة المثال السابق ‪:‬‬

‫)‪Private Sub Worksheet_Change(ByVal Target As Range‬‬


‫)"‪With Range("MYRANGE‬‬
‫‪.Font.Size = 16‬‬
‫‪.Font.Bold = True‬‬
‫‪.Font.ColorIndex = 5‬‬
‫‪.Borders.Weight = xlMedium‬‬
‫‪.Borders.ColorIndex = 3‬‬
‫‪.Interior.ColorIndex = 36‬‬
‫‪.Columns.AutoFit‬‬
‫‪.HorizontalAlignment = xlCenter‬‬
‫‪.VerticalAlignment = xlCenter‬‬
‫‪.RowHeight = 25‬‬
‫‪End With‬‬
‫‪End Sub‬‬

‫وجميع اسطر الكود تقريبا تم شرحها سابقا فيما عدا أن الكود ال يبدأ بكلمة‬
‫‪ SUB‬المعهودة وذلك ألنه مقترن بحدث التغيير بورقة العمل عند المجال‬
‫‪ MYRANGE‬الديناميكي‬

‫حممود زكى الشريف‬


‫‪| P a g e 61‬‬

‫كذلك سطري األوامر‬

‫‪.HorizontalAlignment = xlCenter‬‬
‫‪.VerticalAlignment = xlCenter‬‬

‫واللذان يعنيان توسيط البيانات أفقيا وعموديا‬

‫أيضا سطر األوامر‬

‫‪.RowHeight = 25‬‬

‫والذي يعني جعل الصفوف متساوية بارتفاع ‪05‬‬

‫الكائن ‪Window‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 62‬‬

‫لتغيير التسمية التوضيحية ألسم النافذة للمصنف النشط في‬


‫الشريط العلوي من البرنامج‬
‫)( ‪Sub MZM‬‬
‫"منتديات أوفيسنا التعليمية" = ‪ActiveWindow.Caption‬‬
‫‪End Sub‬‬

‫ويمكن أيضا جعلها بدون أي تسمية توضيحية‬


‫)( ‪Sub MZM‬‬
‫"" = ‪ActiveWindow.Caption‬‬
‫‪End Sub‬‬

‫لتنشيط نافذة بعينها مفتوحه فى الخلفية‬


‫)( ‪Sub MZM‬‬
‫‪Windows("Book1").Activate‬‬
‫‪End Sub‬‬

‫يمكن ان يكون خيار التنشيط باختيار التالي‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.ActivateNext‬‬
‫‪End Sub‬‬

‫كما يمكن ان يكون خيار التنشيط باختيار السابق‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.ActivatePrevious‬‬
‫‪End Sub‬‬
‫إلنشاء إطار جديد لنافذة المصنف الحالي النشط‬
‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.NewWindow‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 63‬‬

‫إلخفاء إطار نافذة المصنف الحالي النشط ‪ ،‬طبعا يمكن‬


‫إظهاره القائمة إظهار أو اختيار ‪ TRUE‬إذا كنت داخل‬
‫محرر األكواد‬
‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.Visible = False‬‬
‫‪End Sub‬‬

‫تكبير حالة النافذة الحالية للمصنف النشط‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.WindowState = xlMaximized‬‬
‫‪End Sub‬‬

‫تصغير حالة النافذة الحالية للمصنف النشط‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.WindowState = xlMinimized‬‬
‫‪End Sub‬‬

‫الوضع العادى لحالة النافذة الحالية للمصنف النشط‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.WindowState = xlNormal‬‬
‫‪End Sub‬‬

‫إلغالق نافذة المصنف الحالي النشط‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.Close‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 64‬‬

‫إلعطاء زووم بقيمة معينة لنافذة ورقة العمل الحالية‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.Zoom = 80‬‬
‫‪End Sub‬‬

‫إلخفاء عالمات التبويب ألوراق العمل بنافذة المصنف النشط‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.DisplayWorkbookTabs = False‬‬
‫‪End Sub‬‬

‫إلخفاء رؤوس األعمدة والصفوف بنافذة ورقة العمل الحالية‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.DisplayHeadings = False‬‬
‫‪End Sub‬‬

‫إلخفاء شريط التمرير األفقي بنافذة المصنف النشط الحالي‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.DisplayHorizontalScrollBar = False‬‬
‫‪End Sub‬‬

‫وللتحكم بشريط التمرير األفقي من حيث الزيادة والنقصان‬


‫يمكن التدرج بالشكل التالي‬
‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.TabRatio = 1‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


| P a g e 65

Sub MZM ()
ActiveWindow.TabRatio = 0.5
End Sub

Sub MZM ()
ActiveWindow.TabRatio = 0
End Sub

‫إلخفاء شريط التمرير العمودي بنافذة المصنف النشط الحالي‬


Sub MZM ()
ActiveWindow.DisplayVerticalScrollBar = False
End Sub

‫لعرض جميع الصيغ بنافذة ورقة العمل النشطة‬


Sub MZM ()
ActiveWindow.DisplayFormulas = True
End Sub

‫إلخفاء خطوط الشبكة بنافذة ورقة العمل النشطة‬


Sub MZM ()
ActiveWindow.DisplayGridlines = False
End Sub

‫إلعطاء لون محدد لخطوط الشبكة بنافذة ورقة العمل النشطة‬


Sub MZM ()
ActiveWindow.GridlineColor = QBColor(14)
End Sub

‫حممود زكى الشريف‬


| P a g e 66

‫لعمل معاينة لفواصل الصفحات للورقة النشطة حاليا‬


Sub MZM ()
ActiveWindow.View = xlPageBreakPreview
End Sub

‫وللعودة لوضع العرض العادي بالورقة النشطة حاليا‬


Sub MZM ()
ActiveWindow.View = xlNormalView
End Sub

‫إلخفاء القيم الصفرية بنافذة ورقة العمل النشطة‬


Sub MZM ()
ActiveWindow.DisplayZeros = False
End Sub

Message Box ‫لقراءة اسم الورقة الحالية في شكل‬


Sub MZM ()
MsgBox Windows(1).ActiveSheet.Name
End Sub

‫لقراءة عنوان مدى محدد تم اختياره ليظهر العنوان في شكل‬


Message Box
Sub MZM ()
MsgBox ActiveWindow.RangeSelection.Address
End Sub

‫حممود زكى الشريف‬


‫‪| P a g e 67‬‬

‫لقراءة عنوان الخلية النشطة بنافذة المصنف تم اختياره‬


‫ليظهر العنوان في شكل ‪Message Box‬‬
‫)( ‪Sub MZM‬‬
‫‪").ActiveCell.Address‬أوفيسنا"(‪MsgBox Windows‬‬
‫‪End Sub‬‬

‫لعمل انقسام داخل نافذة ورقة العمل النشطة‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.Split = True‬‬
‫‪End Sub‬‬

‫لمعرفة عدد األجزاء المنقسمة داخل نافذة ورقة العمل‬


‫النشطة واسترجاع الناتج في شكل مسج‬
‫)( ‪Sub MZM‬‬
‫‪MsgBox ActiveWindow.Panes.Count‬‬
‫‪End Sub‬‬

‫لعمل تجميد األلواح داخل نافذة ورقة العمل النشطة‬


‫)( ‪Sub MZM‬‬
‫‪ActiveWindow.FreezePanes = True‬‬
‫‪End Sub‬‬

‫حممود زكى الشريف‬


‫‪| P a g e 68‬‬

‫حممود زكى الشريف‬


| P a g e 69

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Static previous_selection As String
‫حممود زكى الشريف‬
If previous_selection <> "" Then
Range(previous_selection).Interior.ColorIndex = xlColorIndexNone
End If
| P a g e 71

Private Sub Worksheet_ Activate ( )

End Sub

Private Sub Worksheet_Deactivate ( )

End Sub

‫حممود زكى الشريف‬


| P a g e 71

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)

End Sub

Private Sub Worksheet_Calculate ( )

End Sub

‫حممود زكى الشريف‬


| P a g e 72

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

‫حممود زكى الشريف‬


| P a g e 73

Private Sub Workbook_Open ( )

End Sub

Private Sub Workbook_Open ( )


MsgBox"‫" منتديات أوفيسنا ترحب بكم‬
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

‫حممود زكى الشريف‬


‫‪| P a g e 74‬‬

‫حممود زكى الشريف‬

You might also like