You are on page 1of 43

‫‪‬‬ ‫أوفيسنا‬

‫قسم األكسيس ‪Access‬‬


‫‪‬‬

‫‪ ‬كل االنشطه‬ ‫الرئيسيه ‪


‬قسم تطبيقات و لغات مايكروسوفت ‪
‬قسم األكسيس ‪
 Access‬إنشاء دروس ‪ VBA‬أكسس‬

‫أكسس‬ ‫إنشاء دروس ‪VBA‬‬


‫‪vba‬‬ ‫
‬ ‫أكواد ‪vba‬‬ ‫
‬ ‫دروس ‪vba‬‬

‫بواسطة صالح حمادي‪


,‬‬
‫يناير ‪ 2017 ,20‬في قسم األكسيس ‪Access‬‬

‫اضف رد علي هذا الموضوع‬

‫الصفحه ‪ 1‬من ‪  3‬‬ ‫‪‬‬ ‫التالي‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬

‫‪‬‬

‫السالم عليكم و رحمة اهلل تعالى وبركاته أساتذة و خبراء‬


‫منتدانا الغالي حياكم اهلل‬
‫ص‬
‫ا‪      ‬أردت أن أنجز عمل بمعيتكم الكريمة ‪ .‬و هو إنجاز‬
‫سلسلة دروس في ‪ vba‬األكسس لتقوم إدارة المنتدى من‬ ‫ل‬
‫بعد ذلك بتثبيت هذا الموضوع ليطلع عليه كل من يريد‬ ‫ح‬
‫التعلم و يبقى صدقة جارية لكل من ساهم فيه و لو بحرف‬ ‫ح‬
‫م‬
‫اواحد‪.‬‬
‫دالعمل سوف يقسم إلى مجموعة دروس مثال ‪ :‬المتغيرات‬
‫ي‬
‫‪,‬الجمل اإلختيارية ‪ ,‬الجمل التكرارية ‪ ,‬الكائنات ‪......‬الخ‪.‬‬
‫قام‬
‫بنشر‬
‫وينايرسوف نحاول شرح جميع دوال و تعليمات ‪ VBA‬أكسس‬
‫الموجودة مع إعطاء أمثلة في نهاية كل درس‪.‬‬
‫‪,20‬‬
‫‪2017‬‬
‫على أن يتم تجميعه في األخير مرتبا حسب تسلسل‬
‫الدروس و ال يتم اإلنتقال من درس آلخر حتى نستوفي كل‬
‫ما نستطيع حول هذا الدرس‪.‬‬
‫العمل المطلوب‪ :‬كلما نبدأ في درس جديد‪ .‬يقوم األساتذة‬
‫الكرام بتقديم الدوال و التعليمات التي تندرج تحت عنوان‬
‫هذا الدرس و تقديم شرحها مع وضع مثال بسيط إلستعمال‬
‫‪I accept  ‬‬
‫‪Important Information‬‬
‫الدالة أو التعليمة على أن ال يتم تكرار الدوال و التعليمات‬
‫الموجودة مسبقا في الدرس من قبل أحد األعضاء‪.‬‬
‫أ‬ ‫أ‬
‫و قبل البدء أنتظر إقتراحاتكم فيما يخص طريقة العمل أو‬
‫ترتيب دروس و عناوينها‪ .‬و إن شاء اهلل غدا أو بعد غد‬
‫سوف نبدأ بالعمل على بركة اهلل‪.‬‬


‪6‬‬ ‫
‪16‬‬

‫اخر رد‬ ‫‪Created‬‬ ‫الردود‬


‫‪Sep 22‬‬ ‫‪ 4‬عام‬ ‫‪60‬‬

‫‪‬‬

‫‪‬‬
‫على بركة اهلل نبدأ أول درس و ننتظر مالحظاتكم حول أي شيء نسيته و هو متعلق بهذا‬
‫الدرس أو أي معلومة أخطأت بها‪:‬‬

‫ص‬
‫الــدرس األول ‪ :‬المتغيرات‬
‫ا‬
‫ل‬
‫‪    ‬تعتبر المتغيرات النواة األساسية أو حجر األساس بالنسبة لكل‬
‫برنامج في أي لغة برمجة كانت‪ .‬يعني قبل البدأ يجب أن تقوم بتعريف‬ ‫ح‬
‫المتغيرات التي تحتاجها و تحدد نوعها قبل كل شيء‪.‬‬ ‫ح‬
‫م‬
‫‪-11‬ا‪    ‬أنواع المتغيرت‪:‬‬
‫د‬
‫ي هناك العديد من أنواع المتغيرات و كل نوع يخصص له حجم معين‬
‫قام في الذاكرة‪ .‬سوف نقوم بإضافة شرح جميع أنواع المتغيرات و‬
‫بنشر الحجم الذي يأخذه كل نوع من الذاكرة‪:‬‬
‫يناير‬
‫نص يتسع المتغير النصي إلى ‪ 2‬جيجا بايت ‪ ‬و كل‬ ‫‪:String ,21‬‬
‫‪2017‬‬
‫حرف يشغل ‪ 1‬بايت‬
‫‪ :Boolean‬ياخذ نوعين من القيم ‪  True‬و ‪( False‬طوله ‪2‬‬
‫بيت )‬
‫‪ :Byte‬بايت يكون رقم بين ‪ 0‬من ‪( 255‬طوله ‪ 1‬بايت)‬
‫‪ : Integer‬عدد صحيح (طوله ‪ 2‬بيت ) قيمته من ‪ -32768‬إلى‬
‫‪32767‬‬
‫‪ : Long‬عدد صحيح طويل (طوله ‪ 4‬بيت) قيمته من‪ ‬‬
‫‪ -2,147,483,648‬إلى ‪2.147.483.647‬‬
‫‪ :Signal‬عدد عشري (طوله ‪ 4‬بيت) قيمته من‬
‫‪ -3.402823x1038‬إلى ‪ -1.401298x10-45‬للقيم السالبة‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪                   ‬و من ‪ 1.401298x10-45‬إلى ‪3.402823x1038‬‬
‫للقيم الموجبة‬
‫‪ :Currency‬عملة (طوله ‪ 8‬بيت) ‪ ‬قيمته من‬
‫‪ -922،337،203،685،477.5808‬إلى‬
‫‪922،337،203،685،477.5807‬‬
‫‪ : Double‬مزدوج عدد عشري (طوله ‪ 8‬بيت) قيمته من‬
‫‪ -1.79769313486231x10308‬إلى‬
‫‪ -4.94065645841247x10-324‬للقيم السالبة‪.‬‬
‫‪       ‬و من ‪ 4.94065645841247x10-324‬إلى‬
‫‪ 1.79769313486232x10308‬للقيم الموجبة‬
‫‪ :Date‬نوع البيانات تكون على شكل تاريخ (طوله ‪ 8‬بيت) يبدأ‬
‫تاريخ ‪ vba‬من ‪ 1/1/100‬حتى ‪31/12/9999‬‬
‫‪ : Object‬لتخزين الكائنات التي تحتوي على خصائص و وظائف‬
‫و يتم تعيينه بجملة ‪ set‬ويشغل في الذاكرة ‪ 4‬بايت أو حسب‬
‫خصائص و وظائف الكائن المحدد‪ .‬و سوف نخصص درس لعرض‬
‫أنواع الكائنات‪.‬‬
‫‪  : Variant‬لتخزين كل األنواع السابقة ويمكن تخزين‬
‫المصفوفات بداخله أيضًا‬

‫‪    -2‬طريقة اإلعالن عن المتغيرات‪ :‬اإلعالن عن متغير يعني حجز‬


‫مكان في ذاكرة الكمبيوتر باسم هذا المتغير و يحدد حجمه حسب‬
‫نوع المتغير‪ .‬و يتم تعريف المتغير أو اإلعالن عنه بواسطة العبارة‬
‫‪. DIM‬‬
‫مثال‪IntegerA as Dim  :‬‬
‫لإلعالن عن أكثر من متغير‪:‬‬
‫‪Dim a,b as integer‬‬
‫لإلعالن عن أكثرمن متغير ألنواع مختلفة في نفس السطر‪:‬‬
‫‪Dim A As Double, B As Integer‬‬
‫‪    -3‬مالحظات‪:‬‬
‫‪  -       ‬يفضل اإلعالن عن نوع المتغير لزيادة سرعة التعامل معه‪.‬‬
‫‪   -      ‬المتغيرات التي لم تحدد نوعها يعمل فيجول بيسك علي اإلعالن عنها‬
‫تلقائيا من النوع ‪ Variant‬وهو أبطأ أنواع المتغيرات‪.‬‬
‫‪ -        ‬بالنسبة لإلعالن عن أكثر من متغير من نفس النوع بالطريقة التالي‪:‬‬
‫‪ Dim a,b as integer‬هنا ‪ b‬فقط من النوع ‪ integer‬أما ‪ a‬فهو‬
‫في هذه الحالة يعتبر من النوع‪Variant‬‬
‫يجب أن يتم التعريف بهذا الشكل‪,b as integerDim a :‬‬
‫‪integer‬‬
‫أو‬


‪Dim a as Integer‬‬
‫‪Dim b as Integer‬‬

‫‪I accept  ‬‬


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

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


‪3‬‬ ‫
‪17‬‬

‫‪‬‬

‫‪ 10‬ساعات مضت‪ ,‬صالح حمادي ‪:said‬‬

‫‪j‬‬
‫‪    -2‬طريقة اإلعالن عن المتغيرات‪:‬‬
‫‪j‬‬
‫‪a‬‬
‫‪f‬‬ ‫‪ ‬‬
‫‪f‬‬
‫‪e‬‬
‫طرق استعمالها‪:‬‬

‫‪r‬‬
‫‪r‬‬
‫‪ .1‬اذا اردنا استعمال المتغير في الحدث ‪ /‬الوحدة النمطية فقط (يعني ال يمكن اخذ قيمتها من‬
‫نماذج‪/‬تقارير‪/‬استعالمات‪/‬وحدات نمطية‪ ‬اخرى) ‪ ،‬فنستخدم‪:‬‬
‫قام‬
‫بنشر‬

‪Dim UserName as string‬‬ ‫يناير‬
‫‪,21‬‬

او‬ ‫‪2017‬‬

‫‪Private UserName as string‬‬

‫ويجب ان نستخدم ‪ Dim‬لكل حدث في النموذج‪/‬التقرير ‪ ،‬اي نعيد كتابته لكل حدث ‪،‬‬

‫بينما يمكننا ان نضع ‪ Dim / Private‬مرة واحدة في اعلى الصفحة ‪ ،‬وال تكون داخل اي حدث‬
‫‪ ،‬هكذا‬


‪Option Compare Database‬‬
‫‪Private User_Name As String‬‬

‫‪ ‬‬

‫‪  .2‬بينما اذا اردنا ان تكون القيمة متوفرة في جميع كائنات البرنامج ‪ ،‬فنستخدم التالي في‬
‫وحدة نمطية (حتى ولو كانت وحدة نمطية فارغة)‪:‬‬

‫‪Public UserName as string‬‬

‫مثال هذا ‪ ،‬عندما تستعمل نموذج المستخدمين ‪ ،‬ثم تريد االحتفاظ باسم المستخدم في الكود ‪،‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬ ‫فكل الذي تعمله هو‪:‬‬

"‪UserName = "jjafferr‬‬

‫ثم من اي مكان في البرنامج تستطيع ان تستعمل هذا المتغير ‪ ، UserName‬مثال‪:‬‬

‫"‪User_Prevliage = iif(UserName = "jjafferr" , "Admin‬‬

‫‪.‬‬

‫ويمكننا ان نجعل الكود ال يعمل إال بتعريف المتغير ‪ ،‬وفي الواقع هذه صعبة في البداية ‪ ،‬ولكن‬
‫في النهاية سيكون برنامجك افضل ‪،‬‬

‫وهكذا نجعل الكود يفرض علينا استعمال المعرف‪:‬‬

‫‪.‬‬

‫‪.‬‬

‫واهمية هذه الخطوة هي عندما تريد ان تحفظ البرنامج الحقا بصيغة ‪ mde‬او ‪، accde‬‬
‫فيجب عليك ان‪:‬‬

‫‪.‬‬

‫واذا كانت المتغيرات في‪ ‬الكود معّر فة ‪ ،‬فلن تحصل على اخطاء في التحويل‬

‫‪ ‬‬

‫جعفر‬

‫‪I accept  ‬‬


‫‪Important Information‬‬

‪1‬‬ ‫
‪14‬‬

‫‪‬‬

‫اقتباس‬

‫‪j‬‬
‫‪    -4‬شروط تسمية المتغيرات‪:‬‬
‫‪j‬‬
‫‪a‬‬
‫‪f‬‬
‫أحد الشروط التي التزم بها دائما ‪ ،‬هي كتابة اسم متغير مفهوم وله معنى ‪ ،‬مثال‪File_Name :‬‬
‫او ‪، How_Many‬‬ ‫‪f‬‬
‫‪e‬‬
‫‪r‬‬
‫بحيث بعد مدة لما أرجع لتصحيح الكود ‪ ،‬افهم ما هو عمل المتغير‪.‬‬

‫‪r‬‬‫‪ ‬‬
‫قام‬
‫بنشر‬
‫والمحترفين يذهبون إلى ابعد من هذا ‪ ،‬فباالضافة إلى استعمالهم مسمى مفهوم المعنى ‪ ،‬فإنهم‬
‫يناير‬
‫يسبقون االسم بحروف تدل على ان المتغير رقم أو كلمات ‪ ،‬هكذا‪:‬‬
‫‪,22‬‬
‫‪2017‬‬
‫لالرقام‪ intRows :‬او ‪، nColumns‬‬

‫وللكلمات‪.strName :‬‬

‫‪ ‬‬

‫واستغرب من بعض المتغيرات المستعمله في كود معقد مثل‪ a :‬او ‪!! b‬‬

‫‪ ‬‬

‫جعفر‬


‪1‬‬ ‫
‪14‬‬

‫‪‬‬
‫أيضا يستحسن كتابة أسماء المتغيرات باللغة الالتينية من أجل تسهيل التعامل معها و عدم‬
‫حدوث مشاكل فيما بعد‬

‫ص‬
‫ا‬

‪3‬‬
‫ل‬
‫ح‬
‫ح‬
‫م‬
‫ا‬
‫د‬
‫ي‬
‫قام‬
‫بنشر‬
‫يناير‬
‫‪,22‬‬
‫‪2017‬‬

‫‪I accept  ‬‬ ‫‪‬‬


‫‪Important Information‬‬
‫اضفت بعض المالحظات في مشاركتي االولى‪:‬‬

‫شو قصدك اخي صالح ‪،‬‬

‫انا اعرف ان المتغيرات باللغة الالتينية ‪ ،‬فرجاء اعطنا مثال لوسمحت‪ ‬‬

‫‪j‬‬
‫‪j‬‬‫‪ ‬‬

‫جعفر‬‫‪a‬‬
‫‪f‬‬
‫‪f‬‬
‫‪e‬‬
‫‪r‬‬

‪3‬‬

‫‪r‬‬
‫قام‬
‫بنشر‬
‫يناير‬
‫‪,22‬‬
‫‪2017‬‬

‫‪‬‬
‫مالحظاتك ممتاز و في محلها و متممة للمعنى‬

‫ربما هنا من يستعمل اللغة العربية في تعريف المتغير بهذا الشكل ‪:‬‬
‫ص‬
‫ا‬
‫الرقم_األول ‪Dim‬‬ ‫‪As Integer‬‬ ‫ل‬
‫ح‬
‫مالحظة‪:‬‬ ‫ح‬
‫م‬
‫‪-‬ا القيمه اإلفتراضية للمتغيرات النصيه هي فراغ " "‬
‫د‬
‫‪-‬يأما القيمه اإلفتراضية للمتغيرات الرقميه هي صفر ‪0‬‬
‫‪ ‬قام‬
‫بنشر‬
‫يناير‬

‪7‬‬ ‫‪,22‬‬
‫‪2017‬‬

‫‪‬‬

‫الــدرس الثاني ‪ :‬الجملة الشرطية ( ‪) IF‬‬


‫‪ ‬‬
‫ص‬
‫ا‬
‫تعتبر الجملة ‪ IF‬من أشهر الجمل الشرطية و أكثرها استعماال في‬
‫ل‬
‫جميع لغات البرمجة ولها عدة صيغ كلها تبدأ بــ ‪ If‬و تنتهى بكلمة‬ ‫ح‬
‫ح‬
‫‪ ‬م ‪End If‬ما عدى صيغة واحدة‪.‬‬
‫ا‬
‫دوتستخدم الجملة ‪ IF‬لتنفيذ عمليات معينة حسب شرط محدد‪ ,‬يعني‬
‫ي‬
‫إذا تحقق الشرط ينفذ و إال فال‪.‬‬
‫قام‬

‫‪I accept  ‬‬


‫‪Important‬‬ ‫‪Information‬‬
‫الجملة (‪:(if‬‬ ‫استعمال‬
‫بنشر‬
‫طرق‬
‫يناير‬
‫‪,24 ‬‬
‫‪2017‬‬
‫‪  -1‬الصيغة ( ‪: ) If –Then‬‬

‫‪ ‬‬

‫‪ -  ‬وصيغتها العامة ‪:‬‬

‫‪IF‬‬ ‫‪condition‬‬ ‫‪THEN‬‬ ‫‪statements‬‬

‫‪ -  ‬ومعنى هذه الصيغة ‪ :‬انه اذا تحقق الشرط ( ‪) condition‬‬


‫فسيتم تنفيذ االمر ( ‪) statements‬‬
‫مثال ‪ " :‬مسن"‪ category =  age >=65  THENIF    ‬‬

‫‪ -2  ‬الصيغة ( ‪: ) If – Then – End If‬‬

‫‪ ‬‬

‫‪              ‬صيغتها العامة ‪:‬‬


‪IF condition THEN‬‬

‪statements1‬‬

‪Statements2‬‬
‫‪END IF‬‬

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


‫(‪ )Condition‬بدال من تنفيذ امر واحد‪.‬‬
‫مثال ‪:‬‬

‪If age >= 25 Then‬‬

"شباب"= ‪category‬‬

"السن مقبول"= ‪travail‬‬
‫‪End if‬‬

‫‪ -3‬الصيغة ( ‪: ) If – Then – Else‬‬


‫‪ ‬‬

‫‪         ‬صيغتها العامة ‪:‬‬

‫‪If condition‬‬ ‫
‪Then‬‬

) التعليمات المنفذة في حال تحقق الشرط(‪statements1‬‬

‪Else‬‬

)التعليمات المنفذة في حال عدم تحقق الشرط(‪statements2‬‬
‫‪End If‬‬

‫‪ -         ‬هذه الصيغة تنفذ مجموعة األوامر (‪ ) statements1‬عندما‬


‫يتحقق الشرط (‪) condition‬‬
‫و عندما ال يتحقق الشرط فإنها تنفذ مجموعة األوامر‬
‫(‪.)Statements2‬‬
‫مثال ‪:‬‬

‫‪I accept  ‬‬



‪If grade >= 50 Then‬‬

"ناجح"= ‪Text1‬‬
‫‪Important Information‬‬

‪Else‬‬

"راسب"= ‪Text1‬‬
‫‪End If‬‬

‫‪ -4‬الصيغة ‪: ) If – Then –ElseIf ( ‬‬


‫‪ -‬صيغتها العامة ‪:‬‬
‫‪If‬‬ ‫‪condition1‬‬ ‫
‪Then‬‬
‫(‪statements1‬‬ ‫
)التعليمات المنفذة في حال تحقق الشرط األول‬
‫‪ELSEIF‬‬ ‫‪condition2‬‬ ‫
‪THEN‬‬
‫ذة في حال عدم تحقق الشرط األول و تحقق الشرط الثاني(‪statements2‬‬


‪ELSE‬‬
‫التعليمات المنفذة في حال عدم تحقق جميع الشروط السابقة(‪statements2‬‬
‫‪End If‬‬

‫مثال ‪:‬‬

‪If grade >= 90 Then‬‬

"ممتاز"= ‪Text1‬‬

‪ElseIf grade >= 80 Then‬‬

"جيد جدا"= ‪Text1‬‬

‪ElseIf grade >= 70 Then‬‬

"جيد"= ‪Text1‬‬

‪ElseIf grade >= 60 Then‬‬

"مقبول"= ‪Text1‬‬

‪Else‬‬

"راسب"= ‪Text1‬‬
‫‪End If‬‬

‫مالحظات‪:‬‬
‫‪ -‬في الصيغة األخيرة ( ‪ ) If – Then –ElseIf‬اذا تحقق احد‬
‫الشروط فان البرنامج ينفذ العملية ثم يذهب الى نهاية الجملة‬
‫و ال يتحقق من الشروط الباقية‪.‬‬
‫‪ -‬في حالة أردنا إستعمال شرطين معا أو أكثر نستعمل العبارة‬
‫‪.And‬‬
‫‪ -‬في حالة أردنا تحقق أحد شرطين ليتم تنفيذ العملية نستعمل‬
‫‪Or‬‬
‫‪ ‬‬
‫تم تعديل يناير ‪ 2017 ,24‬بواسطه صالح حمادي‬


‪1‬‬ ‫
‪16‬‬

‫‪‬‬
‫أهم نقطة فى جملة ‪if‬‬

‫هى أنها تختبر الشروط حسب الترتيب‬

‫فإذا وجدت أحد الشروط صحيحا‬

‫توقفت و أعطت الجواب الخاص بهذا الشرط‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫أقصد أنها ال تفحص بقية الشروط‬
‫‪ ‬ع‬
‫ب‬
‫‪ ‬د‬
‫‪ ‬ا‬
‫ل‬
‫ف‬

‪4‬‬
‫ت‬
‫ا‬
‫ح‬
‫ك‬
‫ي‬
‫ر‬
‫ة‬
‫قام‬
‫بنشر‬
‫يناير‬
‫‪,24‬‬
‫‪2017‬‬

‫‪‬‬

‫مثال على استعمال ‪:And‬‬


‪" And Password=2017 Then‬أبو خليل"=‪If UserName‬‬ ‫ص‬

"مرحبا أستاذ أبو خليل"‪MsgBox‬‬
‫ا‬
‫‪End If‬‬
‫ل‬
‫ح‬
‫ح‬
‫في هذا المثال إذا كان اسم المستخدم هو أبو خليل و كلمة المرور هي‬
‫م‬
‫ا‪ 2017‬سوف يقوم البرنامج بعرض رسالة ترحيبية‬
‫د‬
‫ي‬
‫"مرحبا أستاذ أبو خليل"‪MsgBox‬‬ ‫قام‬
‫بنشر‬
‫يناير‬
‫التعليمة‪ .‬يعني لتنفيذ التعليمة‬ ‫و‪,25‬إذا إختل أحد الشرطين فلن يتم تنفيذ‬
‫يجب تحقق الشرطين في نفس الوقت‪.‬‬‫‪2017‬‬

‫مثال على استعمال ‪:Or‬‬


‪If Died_Father=true Or Died_Mother=False Then‬‬

"يتيم" ‪MsgBox‬‬
‫‪End If‬‬

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

‫إذا هناك شخص أبوه متوفي فهو يتيم و إذا كانت أمه متوفية فهو يتيم‬
‫و إذا كان كال والديه متوفيين فهو أيضا يتيم‪.‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫((((((اللهم أرحم جميع موتى المسلمين يا أرحم‬
‫الراحمين يا رب العالمين))))))‬


‪2‬‬ ‫
‪8‬‬

‫‪‬‬
‫ماشاء اهلل عليك اخوي صالح ‪ ،‬كفيت ووفيت ‪ ،‬وما بقيت لي شئ اكتبه‪ ‬‬

‫‪j‬‬‫‪ ‬‬

‫التنسيق‪ :‬وذلك بإستخدام زر الـ ‪( Tab‬لتحريك السطر ‪ ، )Indenting‬و زر ‪( Enter‬لإلنتقال‬ ‫‪j‬‬


‫‪a‬‬
‫‪f‬‬
‫الى السطر التالي)‬

‫تنسيق وتجميع مجموعات اللـ ‪ IF‬مهم ‪ ،‬وكلما كان تنسيقك افضل ‪ ،‬كلما قّلت اخطاءك ‪ ،‬وكلما‬‫‪f‬‬
‫استطعت الوصوت للخطأ بسرع‪ ‬‬ ‫‪e‬‬
‫‪r‬‬
‫‪r‬‬
‫في الصور‪ ‬كود لبرنامج أحد االعضاء (واعتذر مسبقا من صاحب االكواد) ‪،‬‬

‫قام‬
‫الحظ طريقة عرض الكود ‪ ،‬بدون تنسيق ‪ ،‬وصعوبة معرفة بداية ونهاية الشرط ‪: IF‬‬
‫بنشر‬
‫يناير‬
‫‪,25‬‬
‫‪2017‬‬

‫‪ ، ‬وسهولة‬ ‫قبل التنسيق‪ ‬‬

‫القراءة بعد التنسيق‪ ‬‬

‫‪.‬‬

‫اما الكود التالي ‪ ،‬فذكرني بالكاريكاتير "ابحث عن فضولي" ‪ ،‬وهنا نبحث عن بداية ونهاية‬
‫الشرط ‪: IF‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪.‬‬

‫وتم تعديل التنسيق (تغيير الكود هو للتوضيح) الى‪:‬‬

‫‪.‬‬

‫هناك شيئين في التنسيق ‪،‬‬

‫االول‪ :‬الحظ انه من السهل معرفة بداية ونهاية كل شرط ‪،‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫وحتى الشروط المتداخلة في الشرط االصلي ‪ ،‬اصبح من السهل معرفة بدايتها ونهايتها ‪،‬‬
‫ونافذة الكود تخبرنا ‪ :1‬على اي‪ ‬سطر نحن (‪ ، )Line, Ln‬و ‪ :2‬في اي عمود (‪، )Column, Col‬‬
‫مما يساعدنا في عملية التنسيق‬

‫‪.‬‬

‫ثانيا‪ :‬الحظ اني عندما اقفل الجملة الشرطية ‪ ، End If‬فاني اكتب تعليق خلفها ‪ ،‬وهذا التعليق‬
‫مأخوذ من جزء من بداية الشرط ‪، IF‬‬

‫هذا يسهل علّي كثيرا معرفة بداية ونهاية الجملة الشرطية‪:‬‬

‫‪.‬‬

‫جعفر‬

‫‪I accept  ‬‬ ‫


‪1‬‬ ‫
‪9‬‬
‫‪Important Information‬‬
‫‪‬‬

‫الدرس الثالث‪ :‬الدالة ‪Select Case‬‬


‫‪ ‬ص‬
‫ا‬
‫تشبه الدالة ‪ Select Case‬إلى حد كبير الدالة ‪ If‬و لكنها تختلف عنها‬‫ل‬
‫بالتعدد أي أنها تكون في الشروط المتعددة‪.‬‬
‫ح‬
‫ح‬
‫مطريقة االستعمال‪:‬‬
‫ا‬
‫‪ ‬‬
‫د‬
‫ي‬
‫الصيغة األولى‪:‬‬
‫قام‬
‫بنشر‬
‫‪ ‬‬
‫يناير‬
‫‪,26‬‬

‪Select Case Expression‬‬ ‫‪2017‬‬


‪Case Expression_1‬‬

‪Statement_1‬‬

‪Case Expression_2‬‬

‪Statement_2‬‬

‪Case Expression_n‬‬

‪Statement_n‬‬
‫‪End Select‬‬

‫تقوم الدالة ‪ Select Case‬باختبار حالة الكائن أو المتغير‬


‫‪ Expression‬و مقارنتها أو مطابقتها مع الحاالت الموجودة‬
‫بداخلها‪.‬‬

‫و عند تحقق الشرط مع إحدى الحاالت يقوم البرنامج بتنفيذ‬


‫التعليمة ‪ Statement‬التابعة لهذه الحالة‪.‬‬

‫و عند عدم مطابقة الكائن أو المتغير لجميع الحاالت فإن البرنامج‬


‫ال يعطينا أي نتيجة‪.‬‬
‫مثال‪  :1‬كتابة األرقام من ‪ 1‬إلى ‪ 4‬بالحروف‬


‪Select Case me.le_nombre‬‬

‪Case 1‬‬
‫"واحد" = ‪Me.y‬‬

‪Case 2‬‬

"إثنان" = ‪Me.y‬‬

‪Case 3‬‬

"ثالثة" = ‪Me.y‬‬

‪Case 4‬‬

"أربعة" = ‪Me.y‬‬
‫‪End Select‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫أضفنا مربع نص اسمه ‪ le_nombre‬إلدخال األرقام و مربع نص‬
‫اسمه ‪ y‬من أجل ظهور النتيجة‪.‬‬
‫الصيغة الثانية‪:‬‬


‪Select Case Expression‬‬

‪Case Expression_1‬‬

‪Statement_1‬‬

‪Case Expression_2‬‬

‪Statement_2‬‬

‪Case Expression_n‬‬

‪Statement_n‬‬

‪Case Else‬‬

‪Other_statement‬‬
‫‪End Select‬‬

‫في هذه الصيغة عند عدم تحقق الشرط مع جميع الحاالت يتم‬
‫إرجاع التعليمة اإلستثنائية ‪Other_statement‬‬
‫مثال‪  :2‬نفس المثال األول‬


‪Select Case me.le_nombre‬‬

‪Case 1‬‬

"واحد" = ‪Me.y‬‬

‪Case 2‬‬

"إثنان" = ‪Me.y‬‬

‪Case 3‬‬

"ثالثة" = ‪Me.y‬‬

‪Case 4‬‬

"أربعة" = ‪Me.y‬‬

‪Case Else‬‬

"هذا الرقم غير موجود" = ‪me.y‬‬
‫‪End Select‬‬

‫هذا عندما نضيف أي رقم يختلف عن ‪ 1‬أو ‪ 2‬أو ‪ 3‬أو ‪ 4‬يطبع لنا‬
‫"هذا الرقم غير موجود"‬

‫مثال ‪ :3‬برنامج كتابة مالحظات التالميذ حسب الدرجة‬


‪Select Case Me.Degre‬‬

‪Case 0 To 30‬‬

"ضعيف" = ‪Me.y‬‬

‪Case 30 To 49‬‬

"دون الوسط" = ‪Me.y‬‬

‪Case 50 To 69‬‬

"مقبول" = ‪Me.y‬‬

‪Case 70 To 89‬‬

"جيد جدا" = ‪Me.y‬‬

‫‪I accept  ‬‬



‪Case 90 To 100‬‬ ‫‪Important Information‬‬

"ممتاز" = ‪Me.y‬‬

‪Case Else‬‬

"هذه الدرجة خاطئة" = ‪Me.y‬‬
‫‪End Select‬‬

‫هنا إستخدمنا ‪ To‬معناه إلى مثال‪ :‬من ‪ 0‬إلى ‪30‬‬

‫تم تعديل يناير ‪ 2017 ,26‬بواسطه صالح حمادي‬


‪2‬‬ ‫
‪10‬‬

‫‪‬‬
‫السالم عليكم أخي صالح‬

‫‪j‬‬‫‪ ‬‬

‫إطراء وتعقيب‪:‬‬‫‪j‬‬
‫‪a‬‬
‫‪f‬‬ ‫‪ ‬‬
‫‪f‬‬
‫‪e‬‬
‫الموضوع متكامل ‪ ،‬والتنسيق رائع‬

‫‪r‬‬
‫‪r‬‬
‫والشئ الوحيد الذي لم تشر اليه هو (مأخوذ من برنامج االكسس) ‪ ،‬هو خلط المتغير‬
‫‪Expression‬‬
‫قام‬
‫‪ ‬بنشر‬
‫يناير‬
‫‪,27‬‬

‪Case 9, 11, 13‬‬ ‫‪2017‬‬


و‬

‫‪Case 1 To 4, 7 To 9, 11, 13‬‬

‫‪.‬‬

‫ومع ان تشبه الدالة‪  Select Case ‬إلى حد كبير الدالة‪، If ‬‬

‫إال ان المبرمجين المحترفين يفضلون استخدام ‪ Select Case‬على ‪ If‬‬

‫‪ ‬‬

‫جعفر‬

‫‪ ‬‬


‪7‬‬

‫‪‬‬

‫الــدرس الرابع‪ :‬الجملة الشرطية ( ‪) IIF‬‬


‫‪I accept  ‬‬
‫‪Important Information‬‬
‫(صلقد قام أستاذي و أخي جعفر حفضه اهلل بتقديم هذا‬
‫ا‬
‫النشر فاللهم‬ ‫الدرس كله و أنا لم أفعل شيء سوى التنسيق و‬ ‫ل‬
‫ح‬
‫جازيه عنا خير الجزاء يا رب العالمين)‬ ‫ح‬
‫م‬
‫اطريقة استعمال (‪:(iif‬‬
‫د‬
‫‪iif(expr,‬‬ ‫
)‪truepart, falsepart‬‬ ‫ي‬
‫قام‬
‫بنشر‬
‫ييم صح فستأخذ هذه القيمة‪ ,‬اذا كان التقييم خطأ فستأخذ هذه القيمة(‪iif‬‬
‫يناير‬
‫‪,27‬‬
‫‪2017‬‬
‫مثال‪:‬‬


‪Age=50‬‬

‫)"‪Age_Now = iif(Age=50 , "Yes it is", "No it is not‬‬

‫‪ ‬‬

‫ميزاتها‪:‬‬

‫نستطيع استعمالها في الكود ‪ ،‬واالستعالم‬

‫نستطيع ان نضع اكثر من شرط واحد فيها‬

‫مثال‪:‬‬


‪Price=10‬‬

‫‪Qty=5‬‬

‫‪Sale_is= iif(Price* Qty = 50 , "Low sale", iif(Price‬‬

‫‪ ‬‬

‫عيوبها‪:‬‬

‫الدالة تختبر جميع الحاالت ‪ ،‬وال تختبر القيمة االولى وتخرج (مثل‬
‫الـ ‪:)IF‬‬

‫‪ .1‬المثال السابق ‪ ،‬مع ان اول تقييم هو الجواب الصحيح‬


‫‪ ، 50=5*10‬إال ان الدالة ستقوم بتقييم جميع االختيارات ‪ ،‬مما‬
‫يجعلها تأخذ وقت اطول للتقييم ‪،‬‬

‫‪ .2‬بسبب اختبارها لجميع الحاالت ‪ ،‬فيجب ان نكون دقيقين في‬


‫وضع التقييم ‪ ،‬مثال اذا اردنا اختبار قيمة‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫مثال‪:‬‬
‫‪"), MsgBox(n1 /‬القيمة صفر"(‪Divide = iif(n2 = 0, MsgBox‬‬

‫فاننا سنحصل على خطأ ‪ ،‬ألن الدالة تحققت من القيمتين ‪،‬‬


‫والقيمة الثانية هي تقسيم رقم على صفر ‪،‬‬

‫‪ .3‬بطيئه نوعا ما ‪ ،‬ألنها تحول االرقام الى ‪( Variant‬رجاء‬


‫مراجعة الدرس االول لألخ صالح) ‪ ،‬ثم تقوم بالحساب ‪،‬‬

‫‪ .4‬ال تستطيع ان تستخدم اكثر من ‪ 7‬شروط في االستعالم ‪ ،‬مثال‬


‫عندنا ارقام االشهر ونريد نستخرج اسمائها ‪،‬‬

‫‪ .5‬ببساطة مكن ان تخطأ في عدد االقواس والفواصل ‪ ،‬‬

‫‪ .6‬ال تستطيع قراءة وال تغيير اي شئ بسهولة ‪ ،‬وخصوصا اذا كان‬


‫عندنا اكثر من تقييم ‪،‬‬
‫‪ ‬‬

‫امثلة عملية‪:‬‬

‫‪     .1‬اذا عندنا ارقام االسبوع ‪ ،‬ونريد ان نستخرج ايامها ‪ ،‬فاذا‬


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

‫أ‌‪ -‬عمل الكود في محرر ‪ ، VBA‬هكذا‪:‬‬

‫الحظ اني عملت اول شرط ونتيجة القيمة الصحيحة ‪ ،‬ثم انهيت‬
‫السطر بخط سفلي _ (واللي معناه في البرمجة ان الكود‬
‫سيتواصل في السطر التالي ‪،‬‬

‫ثم انتقلت السطر التالي ‪ ،‬ونفس الشئ ‪ ،‬عملت الشرط التالي‬


‫ونتيجة القيمة الصحيحة و‪ ....‬كما سبق و‪ ...‬الى ان نوصل للسطر‬
‫االخير ‪،‬‬

‫فوضعت الشرط االخير ونتيجة القيمة الصحيحة والخطأ ‪ ،‬ثم‬


‫حسبت كم قوس مفتوح ‪ ،‬فقفلت بنفس عددها‪:‬‬


‪iDay = 2‬‬


_ ;"‪Today_is = IIf(iDay = 1; "Sun‬‬

‫;"‪IIf(iDay = 2; "Mon‬‬

‫;"‪IIf(iDay = 3; "Tue‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫;"‪IIf(iDay = 4; "Wed‬‬
IIf(iDay = 5; "Thu";

IIf(iDay = 6; "Fri";

‫ حتى نأخذها‬، ‫ والخطوة التالية ان نجعلها في سطر واحد‬-‫ب‬


، ‫لإلستعالم‬

‫ لتكون النتيجة‬، _ ‫وهي ان نحذف االشارة‬ 

Today_is = IIf(iDay = 1; "Sun"; IIf(iDay = 2; "Mon";

‫ واردنا معرفة عدد‬، ‫ اذا عندنا سجالت الصف االول والثاني‬    .2


:‫الطالب لكل صف‬

iif([Section]= "A" ; 1;0)

:‫االستعالم‬ ‫وهكذا تكون في‬

‫ شروط (ارقام االشهر نريد تحويلها الى‬7 ‫ اذا عندنا اكثر من‬   .3
:‫ فهنا نضطر الى عمل وحدة نمطية‬، )‫اشهر‬

Function What_Month(M)

Select Case M

Case 1

What_Month = "Jan"

Case 2

What_Month = "Feb"

Case 3

What_Month = "Mar"

Case 4

What_Month = "Apr"

Case 5

What_Month = "May"

Case 6

What_Month = "Jun"

Case 7

Important Information
What_Month = "Jul"

I accept   Case 8

What_Month = "Aug"


‪Case 9‬‬

"‪What_Month = "Sep‬‬

‪Case 10‬‬

"‪What_Month = "Oct‬‬

‪Case 11‬‬

"‪What_Month = "Nov‬‬

‪Case 12‬‬

"‪What_Month = "Dec‬‬
‫‪End Select‬‬ ‫

‫‪End Function‬‬

‫ونرسل لها ارقام االشهر ‪ ،‬هكذا‬

‫‪.‬‬

‫والنتيجة‬

‫‪ ‬‬


‪10‬‬

‫‪‬‬
‫شكرا أخي صالح‬

‫‪j‬‬‫‪ ‬‬

‫‪j‬‬
‫في الواقع انا لم ادرس البرمجة (نعم مادة الفورتران في بداية دراستي الجامعية) ‪ ،‬ولم ادخل‬
‫‪a‬‬
‫‪f‬‬
‫‪ ‬وانما كل الذي عندي من تجارب‬ ‫في تدريب ‪ ،‬وحتى ما عندي رخصة سواقة الحاسوب‬

‫‪f‬‬
‫عملية ‪،‬‬

‫لذلك ترى الفرق واضح من طريقة عرضك للموضوع ‪ ،‬وطريقة عرضي‬ ‫‪e‬‬
‫‪r‬‬
‫‪r‬‬ ‫‪ ‬‬

‫قام‬
‫جعفر‬
‫بنشر‬
‫يناير‬
‫‪,27‬‬

‪5‬‬
‫‪2017‬‬

‫‪‬‬

‫‪ 58‬دقائق مضت‪:jjafferr said ,‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬‫شكرا أخي صالح‬
‫ص‪ ‬‬
‫ا‬
‫في الواقع انا لم ادرس البرمجة (نعم مادة الفورتران في بداية دراستي الجامعية) ‪ ،‬ولم‬
‫ل‬
‫ح ادخل في تدريب ‪ ،‬وحتى ما عندي رخصة سواقة الحاسوب ‪ ‬وانما كل الذي عندي‬
‫ح من تجارب عملية ‪،‬‬
‫م‬
‫لذلك ترى الفرق واضح من طريقة عرضك للموضوع ‪ ،‬وطريقة عرضي‬
‫ا‬
‫د‬
‫ي‬
‫الحمد هلل نحن نشترك في هذا األمر‬
‫قام‬
‫بنشر أيضا لم ادرس البرمجة و لكن تعلمت الخورزميات وحدي بالمطالعة فهي أساس البرمجة‬
‫و أنا‬
‫ينايرمارست لغة الفجوال بسيك قليال قبل اإلنتقال إلى األكسس و اآلن أنا أتعلم الدلفي إلى‬
‫ثم‬
‫‪,27‬‬
‫جانب األكسس هذا كله هواية للبرمجة‪ .‬مع العلم أن إختصاصي مختلف تماما و هو "ماستر‬
‫‪2017‬‬
‫هندسة كهربائية"‬


‪6‬‬

‫‪‬‬

‫الدرس الرابع‪ :‬الحلقات التكرارية أو الدورانية ‪ Looping‬‬


‫‪ ‬‬
‫ص‬
‫افي كثير األحيان يحتاج المبرمج أو المستخدم إلى تكرار تعليمة عدد‬
‫من المرات حسب الحاجة‪ .‬و هناك نوعان من الحلقات التكرارية ‪,‬‬‫ل‬
‫ح‬
‫األولى في حالة كان عدد مرات التكرار معروف و الثانية في حالة كان‬
‫ح‬
‫عدد التكرار مرتبط بشرط معين‪.‬‬
‫م‬
‫‪ ‬ا‬
‫د‬
‫أوال‪ :‬الحلقة (‪)For … Next‬‬ ‫ي‬
‫قام‬
‫… ‪ )For‬لتكرار عدد من المرات بحيث يكون‬ ‫تستخدم الحلقة (‪Next‬‬‫بنشر‬
‫يناير‬
‫عدد التكرارات معلوم‪.‬‬
‫‪,28‬‬
‫‪2017‬‬

]‪For counter = start To end [step increment‬‬

‪Statement‬‬
‫‪Next counter‬‬

‫‪ :Counter‬متغير يمثل عداد الحلقة‬


‫‪ :Start‬القيمة االبتدائية للدوران‬
‫‪ :End‬القيمة النهائية للدوران‬
‫‪ :Increment‬مقدار الزيادة في كل حلقة من حلقات الدوران و إذا لم‬
‫يوضع يأخذ القيمة ‪ 1‬افتراضيا‬
‫‪ ‬‬

‫مثال‪:1‬‬

‫‪Important Information‬‬
‫‪ ‬‬

‫‪I accept  ‬‬


‫‪ ‬‬
‫‪ ‬‬


‪For i = 1 To 10‬‬

‪Me.y = Me.y + i‬‬
‫‪Next i‬‬

‫هذا البرنامج يقوم بحساب مجموع األعداد من ‪ 1‬إلى ‪. 10‬‬


‫بحيث ‪ i‬هو العداد و ‪ y‬مربع نص تظهر به النتيجة و القيمة االبتدائية‬
‫له يجب أن تكون ‪0‬‬

‫مثال‪:2‬‬
‫‪ ‬‬


‪For i = 0 To 10 Step 2‬‬

‪Me.y = Me.y + i‬‬
‫‪Next i‬‬

‫في هذا البرنامج وضعنا قيمة االنتقال ‪ 2‬يعني أن البرنامج‬


‫سوف يحسب مجموع األعداد الزوجية فقط (من ‪ 0‬إلى ‪)10‬‬
‫‪ ‬‬

‫ثانيا‪ :‬الحلقة (‪)For Each … Next‬‬


‫‪ ‬‬

‫تستخدم الحلقة (‪ )For  Each… Next‬عندما نريد تنفيذ تعليمة أو‬


‫مجموعة من التعليمات لكل عنصر في مصفوفة أو مجموعة‪ .‬و رغم‬
‫أنها تشبه (‪ )For … Next‬كثير إال أنها تقوم بتنفيذ حلقة لكل عنصر‬
‫مما يعني أنه ال يوجد عداد في هذا النوع من الحلقات‪.‬‬

‫و يمكن استخدامها في المصفوفات أو مع الكائنات‪.‬‬


‫صيغتها‪:‬‬


‪For Each element In Group‬‬

]‪[statement 1‬‬

]‪[statement 2‬‬

‪....‬‬

]‪[statement n‬‬
‫‪Next‬‬

‫مثال‪:1‬‬


‪Dim Array_n() as string‬‬


)‪Array_n = Array(1, 2, 3, 5‬‬

‪Dim sum As Integer‬‬

‫‪Important Information‬‬
‫‪sum=0‬‬

‫‪I accept  ‬‬



‪For Each Item In Array_n‬‬

‪sum = sum + Item‬‬

‪Next‬‬

‫‪Me.y = sum‬‬

‫‪ Array_n ‬هي مصفوفة بها ‪ 4‬عناصر‪.‬‬


‫هذا البرنامج يقوم بحساب مجموع هذه العناصر و يضعها في مربع‬
‫النص ‪y‬‬
‫‪ :Item‬هي العنصر‬
‫‪ :i‬هو العداد‬
‫‪ ‬‬

‫مثال‪:2‬‬


‪Dim frm As Form‬‬

‪Dim fc As Control‬‬


‪Set frm = Me‬‬


‪For Each fc In frm.Controls‬‬

)‪Me.listbox.AddItem (fc.Name‬‬
‫‪Next‬‬

‫هذا البرنامج يقوم بإضافة جميع أسماء عناصر النموذج الحالي إلى‬
‫مربع قائمة ‪.listbox‬‬

‫السطر األول هو تعريف المتغير ‪ frm‬من ‪( Form‬نموذج)‬

‫السطر الثاني تعريف المتغير ‪ fc‬من ‪( Control‬عنصر تحكم)‬

‫السطر الثالث إسناد النموذج الحالي )‪  (Me‬للمتغير ‪ frm‬و ذلك‬


‫باستعمال عبارة ‪ set‬ألن النموذج عبارة عن كائن )‪. (Object‬‬

‫السطر الرابع هو القيام بالدوران لكل عنصر من عناصر‬


‫النموذج(‪ )frm.Controls‬‬

‫السطر الخامس إضافة اسم العنصر)‪ (fc.Name‬إلى مربع ‪Listbox‬‬


‫القائمة‪  ‬و ذلك بإستعمال التعليمة ‪AddItem‬‬
‫‪ ‬‬

‫ثالثا‪ :‬الحلقة (‪)Do Until  condition ... Loop‬‬


‫‪ ‬‬

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

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫تنفيذ التعليمات ‪ ,Statments‬ثم يرجع للسطر ‪ Do until‬الختبار‬
‫الشرط ثانية‪ .‬و هكذا‪.‬‬
‫أ‬
‫يعني أنه سوف يتم تكرار الحلقة عدد من المرات حتى يتحقق الشرط‪.‬‬
‫و لن ينفذه و لو مرة واحدة إذا كان الشرط صحيح من البداية‪.‬‬

‫صيغتها‪:‬‬


‪Do Until condition‬‬

‪Statments‬‬
‫‪Loop‬‬

‫مثال‪:‬‬


‪Dim i As Integer‬‬

‪Dim sum As Integer‬‬
‫‪i = 1‬‬

‪sum = 0‬‬


‪Do Until i > 10‬‬

‪sum = sum + i‬‬

‪i = i + 1‬‬

‪Loop‬‬

‫‪Me.y = sum‬‬

‫يقوم هذا البرنامج بحساب مجموع األعداد من ‪ 1‬إلى ‪. 10‬‬

‫‪ i‬متغير من نوع ‪ integer‬يمثل العداد بالنسبة للحلقة في كل حلقة‬


‫يزداد ‪ 1‬و فيمته االبتدائية هي ‪.1‬‬

‫‪ sum‬متغير من نوع ‪ integer‬يمثل مجموع األعداد قيمته االبتدائية‬


‫هي ‪.0‬‬
‫‪ ‬‬

‫مادام ‪ i<10‬فإن البرنامج يبقى يكرر العملية حتى يصبح ‪ i>10‬و بعد‬
‫نهاية الدوران يضع القيمة النهائية في مربع النص ‪y‬‬

‫رابعا‪ :‬الحلقة ( ‪)Do ... Loop Until condition‬‬


‫‪ ‬‬

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

‫صيغتها‪:‬‬


‪Do‬‬

‪Statements‬‬
‫‪Loop Until condition‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫مثال‪:‬‬

‪Dim i As Integer‬‬

‪Dim sum As Integer‬‬
‫‪i = 1‬‬

‪sum = 0‬‬


‪Do‬‬

‪sum = sum + i‬‬
‫‪i = i +2‬‬

‪Loop Until i > 10‬‬

‫‪Me.y = sum‬‬

‫هذا البرنامج يقوم بحساب مجموع األعداد الفردية من ‪ 0‬إلى ‪10‬‬


‫ألن القيمة االبتدائية للعداد هي ‪ 1‬و مقدار الزيادة في كل حلقة‬
‫(الخطوة) هو ‪2‬‬
‫خامسا‪ :‬الحلقة (‪)Do While condition ... Loop‬‬
‫هذا النوع من الحلقات يقوم بتنفيذ الدوران مادام الشرط‬
‫‪ Condition‬محقق وإال يتم التوقف عن الدوران في الحلقة و تقوم‬
‫هذه الدالة بتفحص الشرط في بداية الحلقة‪.‬‬

‫صيغتها‪:‬‬
‫‪ ‬‬


‪Do While Condition‬‬

‪Statements‬‬
‫‪Loop‬‬

‫مثال‪:‬‬


‪Dim i As Integer‬‬

‪Dim sum As Integer‬‬
‫‪i = 0‬‬

‪sum = 0‬‬


‪Do While i <= 10‬‬

‪sum = sum + i‬‬

‪i = i + 2‬‬

‪Loop‬‬


‫‪Me.y = sum‬‬

‫يقوم هذا البرنامج بحساب مجموع األعداد الزوجية من ‪ 0‬إلى ‪10‬‬


‫مادام ‪ i<=10‬فإن البرنامج يعيد الدوران‪ .‬في كل دورة يقوم بإضافة ‪2‬‬
‫للعداد‪  ‬حتى يصبح ‪i>10‬‬

‫سادسا‪ :‬الحلقة (‪)Do ... Loop While condition‬‬


‫‪I accept  ‬‬
‫‪Important Information‬‬ ‫‪ ‬‬
‫هذا النوع من الحلقات الدورانية المشروطة يتم فيه تنفيذ التعليمات‬
‫مرة واحدة على األقل ألنها تختبر الشرط في نهاية الحلقة و هي تشبه‬
‫النوع الرابع كثيرا‪ ,‬إال أنها تستمر في الدوران مادام الشرط محقق و‬
‫تتوقف عندما يصبح الشرط غير محقق‪.‬‬

‫صيغتها‪:‬‬


‪Do‬‬

‪Statements‬‬
‫‪Loop While Condition‬‬

‫مثال‪:‬‬


‪Dim i As Integer‬‬

‪Dim mult As Long‬‬

‪i = 10‬‬

‪mult = 1‬‬


‪Do‬‬

‪mult = mult * i‬‬

‪i = i - 1‬‬

‪Loop While i > 0‬‬

‫‪Me.y = mult‬‬

‫هذا البرنامج يقوم بحساب جداء األعداد من ‪ 10‬إلى ‪ 1‬و يضع النتيجة‬
‫في ‪me.y‬‬
‫هنا وضعنا العداد ‪ i‬تنازليا (‪ )i=i-1‬في كل دورة ينقص ‪ 1‬من العداد‬
‫حتى يصل إلى ‪0‬‬
‫نالحظ هنا بالنسبة للمتغير ‪ mult‬و الذي يمثل الناتج أنني وضعت‬
‫نوعه‪Long  ‬بدال من ‪ Integer‬و السبب يرجع ألن النوع ‪integer‬‬
‫أقصى قيمة له هي ‪ 32767‬و في هذه الحالة الناتج يفوق هذا العدد و‬
‫بالتالي سوف يظهر لنا الخطأ رقم ‪)Overflow( 6‬‬


‪7‬‬

‫‪‬‬

‫الدرس الخامس‪ :‬استعمال الرموز‬


‫‪ ‬‬

‫إن استعمال الرموز و األحرف لها دور كبير و ال يمكن اإلستغناء عليه‬
‫في جميع لغات البرمجة‪ .‬و يختلف دور الرموز حسب موقعها في الكود‬
‫و سنحاول ذكر ما نستطيع ذكره في هذا الدرس و أتمنى من اإلخوة‬
‫أن يكملوا ما عجزت عن ذكره‪.‬‬
‫‪I accept  ‬‬
‫‪Important Information‬‬
‫الفاصلة ‪,‬‬
‫ص‬
‫تستخدم الفاصلة بشكل واسع في اكواد ‪ VBA‬فمثال نورد هنا‬
‫ا‬
‫بعض استخدماتها على سبيل المثال ال للحصر‪:‬‬
‫ل‬
‫ح‬
‫تستخدم للفصل بين قيم دالة تتطلب ادراج عدة قيم‬‫ح‬
‫م‬
‫امثال‪:‬‬
‫د‬
‫ي‬
‫)‪exm=DFirst(Expr, Domain, Criteria‬‬ ‫قام‬
‫بنشر‬
‫يناير‬
‫بين المتغييرات عند تعريفها‬ ‫للفصل‬
‫‪,30‬‬
‫‪2017‬‬
‫مثال‪:‬‬

‫‪Dim a,b,c As Integer‬‬

‫االقواس الهاللية ( )‬

‫تستخدم االقواس الهاللية في فيجول بيسك في االماكن التالية ‪:‬‬

‫‪-‬عند كتابة االكواد‪


.‬‬
‫‪-‬عند بداية كتابة اجراء معين او دالة ما‪.‬‬

‫‪-‬في العمليات الحسابية‪.‬‬

‫مثال‪:‬‬


)‪Function Example (exm As Boolean‬‬
‫ ‪D=(e-f)*g‬‬ ‫

‫‪moy=(2+3+4)/3‬‬

‫الفاصلة المنقوطة‪;  ‬‬

‫تستخدم الفارزة المنقوطة في بعض من دوال اكسس و بالتحديد‬


‫في منشأ التعابير‬

‫عالمتي االقتباس " "‬

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


‫و بالتالي سوف يفهم البرنامج ان ما هو موجود بين عالمتي‬
‫االقتباس هو نص و يتعامل معه عل هذا االساس‪.‬‬

‫مثال‪:‬‬

‫"منتدى أوفيسنا"=‪Text0‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪ ‬عالمة االقتباس المفردة‪
'  ‬‬
‫تستخدم عالمة االقتباس المفردة ' لتوضيح‪  ‬ما بعدها هو شرح و‬
‫ليس عبارة برمجية‬

‫مثال‪:‬‬

‫‪' A = Text0.BackColor‬‬

‫االقواس المربعة‪
][  ‬‬
‫االقواس المربعة ايضًا حالها حال الرموز السابقة لها استخداماتها‬
‫المحددة و تتمثل استخدماتها في توضيح ان المتغييرات‬
‫المحصورة بين قوسين مربعين انما هي اسماء لجدول او نموذج‬
‫او استعالم او عناصر داخل تلك النماذج او حقل ضمن الجداول و‬
‫االستعالمات و تستخدم في منشأ التعابير و كودات ال)‪(VBA‬‬
‫على حٍد سواء و في بعض االحيان يمكن االستغناء عنها اي ان‬
‫نذكر العناصر السابقة بدون حصرها بين قوسين‬

‫مثال‪:‬‬

‫"ممكلة االكسس و الوورد" = ]‪Forms![form1].[Text0‬‬

‫عالمة التعجب !

‫تستخدم عالمة التعجب على حد علمي استخدام وحيد و هو‬
‫موضح في‬

‫مثال‪:‬‬

‫و الوورد" = ]‪Forms![form1].[Text0‬‬ ‫"ممكلة االكسس‬

‫و المثال السابق يوضح ان عالمة التعجب توضح ان العنصر الذي‬


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

‫الرمز &‬

‫و هي‪  ‬اختصار لكلمة ‪ AND‬باللغة االنكليزية و هنا تستخدم لربط‬


‫سلسلتين نصيتين او اكثر‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫مثال‪:‬‬
‫= ‪Text0‬‬ ‫"مملكة " & "االكسس " & "و " & "الوورد"‬

‫عالمة =

‫و هي تقوم بإسناد قيمة ما بعدها للمتغيير الموجود قبلها سواءًا‬
‫كانت تلك القيمة رقم او معادلة رياضية او قيمة منطقية او‬
‫سلسلة نصية ‪ ..‬الخ‬

‫مثال‪:‬‬

‫‪A=b+c‬‬

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

‫مثال‪:‬‬

‫"احمد الحربي" = ‪Text0.Text‬‬

‫عالمة الشارحة السفلية _‬

‫تستخدم هذه العالمة للفصل بين اسم العنصر و الحدث المرتبط‬


‫به‬

‫مثال‪:‬‬

‫)(‪Private Sub Command2_Click‬‬

‫عالمة ‪
#‬‬
‫تستعمل هذه العالمة لتحول سلسلة رقمية الى تاريخ‬

‫مثال ‪:‬‬

‫‪Text0 = #30/1/2017#‬‬

‫‪ +‬عملية الجمع‬

‫‪ -‬تستعمل لعمية الطرح‬

‫‪I accept  ‬‬


‫‪Important‬‬
‫‪ Information‬الضرب‬
‫* تستعمل لعملية‬
‫‪ /‬تستعمل لعملية القسمة‬

‫^ تستعمل لعملية األس‬

‫مثال‪:‬‬


‪text1=2+3‬‬
‫‪text2=10-6‬‬
‫‪text3=70/5‬‬
‫‪text4=4*23‬‬
‫‪text5=6^4‬‬

‫‪ ‬‬

‫‪ ‬‬

‫تم تعديل يناير ‪ 2017 ,30‬بواسطه صالح حمادي‬


‪5‬‬

‫‪‬‬
‫شكرا جزيال اخي صالح‬

‫‪j‬‬‫‪ ‬‬
‫‪j‬‬
‫تسلم ايدك على هذا العمل ‪ ،‬والواقع ان العمل مو سهل ‪ ،‬انا اشتغلت على جزء واحد واعرف‬
‫‪a‬‬
‫الصعوبة‬
‫‪f‬‬
‫‪f‬‬
‫‪e‬‬ ‫‪ ‬‬

‫‪r‬‬
‫‪r‬‬
‫وعندي أضافات سأعمل عليها ان شاء اهلل‬

‫‪ ‬قام‬
‫بنشر‬
‫جعفر‬
‫يناير‬
‫‪,30‬‬
‫‪2017‬‬

‪5‬‬

‫‪‬‬

‫‪ 4‬ساعات مضت‪:jjafferr said ,‬‬

‫شكرا جزيال اخي صالح‬

‫‪ ‬‬

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

‫‪I accept  ‬‬


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

‪1‬‬ ‫
‪3‬‬ ‫بنشر‬
‫يناير‬
‫‪,30‬‬
‫‪2017‬‬

‫‪‬‬

‫الدرس السادس‪ :‬الدوال النصية‬


‫‪ ‬‬
‫ص‬
‫اهنالك الكثير من الدوال المستعملة في ‪ VBA‬و سوف نحاول ذكر‬
‫ل‬
‫الدوال المشهورة منها حسب عملها‪:‬‬
‫ح‬
‫‪ :Asc‬إرجاع عدد صحيح يمثل رمز الحرف األول في السلسلة النصية‪.‬‬ ‫ح‬
‫م‬
‫‪ ‬ا‬
‫د‬
‫مثال‪:‬‬
‫ي‬
‫قام‬

)"أوفيسنا"(‪Me.y = Asc‬‬ ‫بنشر‬
‫النتيجة=‪195‬‬ ‫فبراير‬
‫‪,3‬‬
‫‪2017‬‬
‫‪ :Chr‬تحويل عدد صحيح إلى حرف أو رمز‪.‬‬
‫‪ ‬‬

‫مثال‪:‬‬


)"‪Me.y = Chr("210‬‬
‫النتيجة=ز‬

‫‪ :InStr‬استخراج موضع بداية سلسلة ضمن سلسلة أخرى‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬

‫لسلسلةالمبحوث عنها‪,‬السلسلة التي يتم فيها البحث‪,‬مكان بداية البحث(‪Instr‬‬


‫‪Me.y = InStr(1,"homsalah", "a")=5‬‬

‫‪ :RevInStr‬إرجاع موضع تواجد سلسلة ضمن سلسلة أخرى بدءا من‬


‫نهاية السلسلة‪.‬‬
‫‪I accept  ‬‬
‫‪Important Information‬‬ ‫‪ ‬‬

)المقارنة‪,‬بداية البحث‪,‬السلسلة المبحوث عنها‪,‬السلسلة(‪InStrRev‬‬
‫‪Me.y = InStrRev("homsalah", "a", -1)=7‬‬

‫‪ :LCase‬تحويل حروف سلسلة إلى حروف صغيرة‪.‬‬

‫مثال‪:‬‬

‫‪Me.y = LCase("ABC")=abc‬‬

‫‪ ‬‬

‫‪ :UCase‬تحويل األحرف إلى أحرف كبيرة‪.‬‬

‫مثال‪:‬‬


)السلسلة النصية(‪UCase‬‬
‫"‪Me.y = UCase("abcd")="ABCD‬‬

‫‪ :Left‬ارجاع جزء من سلسلة حرفية حسب عدد الحروف المطلوبة‬


‫من جهة اليسار‪.‬‬
‫‪ ‬‬

‫مثال‪:‬‬


) عدد األحرف المطلوبة‪,‬السلسلة(‪Left‬‬
‫‪Me.y = Left("1999", 2)=19‬‬

‫‪ :Len‬حساب عدد األحرف في السلسلة‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)السلسلة(‪len‬‬
‫‪Me.y = Len("1999")=4‬‬

‫‪  :LTrim‬حذف الفراغات الموجودة في الجهة اليسرى‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)السلسلة(‪Trim‬‬
‫"(‪Me.y = Trim‬‬ ‫"‪1999")="1999‬‬

‫‪ :Mid‬ارجاع جزء من سلسلة بحيث تحدد بداية الجزء و طوله (عدد‬


‫األحرف)‪.‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬ ‫‪ ‬‬
‫مثال‪:‬‬


)عدد األحرف‪,‬نقطة البداية(رقم)‪,‬السلسلة(‪Mid‬‬
‫"‪Me.y = Mid("SALAH", 3, 2)="LA‬‬

‫‪ :Replace‬تعويض جزء من سلسلة بجزء آخر‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)الجزء المعوض‪,‬الجزء الذي نريد استبداله‪,‬السلسلة(‪Replace‬‬
‫"‪Me.y = Replace("SALAH", "H", "T")="SALAT‬‬

‫‪ :Right‬ارجاع جزء من سلسلة حرفية حسب عدد الحروف المطلوبة‬


‫من جهة اليمين‪.‬‬

‫مثال‪:‬‬


)عدد الحروف‪,‬السلسلة(‪Right‬‬
‫"‪Me.y = Right("SALAH", 2)="AH‬‬

‫‪ :RTrim‬حذف الفراغات الموجودة في الجهة اليمنى لسلسلة‪.‬‬

‫مثال‪:‬‬


)السلسلة(‪RTrim‬‬
‫‪Me.y = RTrim("15‬‬ ‫"‪")="15‬‬

‫‪ ‬‬

‫‪ :Trim‬حذف المسافات البادئة و الزائدة من سلسلة‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)السلسلة(‪Trim‬‬
‫"(‪Me.y = Trim‬‬ ‫‪15‬‬ ‫"‪")="15‬‬

‫‪ :Space‬ارجاع سلسلة تتألف من عدد من المسافات المحددة‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)عدد الفراغات(‪Space‬‬
‫"=)‪Me.y = Space(3‬‬ ‫"‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪ :Str‬ارجاع متغير من نوع ‪ string‬يمثل رقم‪(.‬تحويل متغير من نوع‬
‫رقم إلى متغير من نوع سلسلة نصية)‬
‫‪ ‬‬

‫مثال‪:‬‬


)العدد(‪Str‬‬

"‪Me.y = Str(3)=" 3‬‬

"‪Me.y = Str(-3)="-3‬‬
‫تقوم بإرجاع مسافة قبل األعداد الموجبة‬

‫‪ :StrComp‬ارجاع عدد صحيح يشير إلى نتيجة مقارنة سلسلتين‪.‬إذا‬


‫كانت متساوية يرجع ‪ 0‬و إذا كانت مختلفة يرجع ‪ 1‬أو ‪-1‬‬
‫‪ ‬‬

‫مثال‪:‬‬


)السلسلة‪,2‬السلسلة‪,1‬المقارنة(‪StrComp‬‬

‪Me.y = StrComp("ass", "ass")=0‬‬
‫‪Me.y = StrComp("as", "ass")=-1‬‬

‫‪ ‬‬

‫‪ :StrConv‬ارجاع سلسلة تم تحويلها كما هو محدد‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)‪,LCID‬رقم يمثل رمز التحويل‪,‬السلسلة(‪StrConv‬‬
‫"‪Me.y = StrConv("ass", 1)="ASS‬‬

‫رموز التحويل‪:‬‬

‫‪ :1‬يحول السلسلة إلى أحرف كبيرة‬

‫‪ :2‬يحول السلسلة إلى أحرف صغيرة‬

‫‪ :3‬يحول الحرف األول من كل كلمة في السلسلة إلى حرف كبير‬

‫‪ :64‬تحول السلسلة إلى ‪ Unicode‬باستخدام مخطط الشفرة‬


‫االفتراضي للنظام‪.‬‬

‫‪ :128‬تحول السلسلة إلى ‪ Unicode‬باستخدام مخطط الشفرة‬


‫االفتراضي للنظام‪.‬‬

‫الرموز‪https://support.office.com/ar-   :‬‬ ‫و هذا الرابط به مختلف‬


‫‪I accept  ‬‬
‫‪Important Information‬‬
‫‪/SA/article‬الدالة‪StrConv-19c3816f-dbc9-4adf-891c-fd32734c92e0-‬‬

‫أ‬
‫‪ :String‬تكرار أحرف بعدد معين‪.‬‬
‫‪ ‬‬

‫مثال‪:‬‬


)الحرف‪ ,‬عدد التكرارات(‪String‬‬
‫"‪Me.y = String(3, "S")="SSS‬‬

‫‪ ‬‬

‫‪ :StrReverse‬قلب ترتيب أحرف سلسلة نصية‪.‬‬


‫‪ ‬‬

‫مثال‪:‬‬


)السلسلة(‪StrReverse‬‬
‫"‪Me.y = StrReverse("ABCD")="DCBA‬‬

‫‪ ‬‬

‫‪ ‬‬

‫تم تعديل فبراير ‪ 2017 ,3‬بواسطه صالح حمادي‬


‪6‬‬

‫‪...weeks later 2‬‬

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

‫‪s‬‬
‫نجهلها‪ ‬‬

‫‪a‬‬
‫‪n‬‬
‫تحياتي‬

‫‪d‬‬
‫‪a‬‬

‪2‬‬
‫‪n‬‬
‫‪e‬‬
‫‪t‬‬
‫قام‬
‫بنشر‬
‫فبراير‬
‫‪,13‬‬
‫‪2017‬‬

‫‪‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪k‬‬
‫السالم عليكم اخوانى اتمنى ان اشارك معكم فى هذا العمل الرائع حتى يكون مرجع‬ ‫‪i‬‬
‫‪n‬‬
‫‪g‬‬
‫لالعضاء‪.‬‬
‫‪5‬‬
‫‪s‬‬
‫‪t‬‬
‫اتمنى ان ال ينسي هذا الموضوع وهذه مشاركة محذوفة اتمنى ان تعيد تنشيط الموضوع ‪.‬‬

‫‪a‬‬
‫الدالة ‪DateAdd‬‬ ‫‪r‬‬
‫قام‬
‫بنشر‬
‫يمكنك استخدام الدالة ‪ DateAdd‬إلضافة فاصل زمني معّي ن أو طرحه من تاريخ ما‪ .‬على‬
‫فبراير‬
‫‪,17‬‬
‫سبيل المثال‪ ،‬يمكنك استخدام الدالة ‪ DateAdd‬لحساب تاريخ لمدة ‪ 30‬يومًا من اليوم أو‬
‫‪2017‬‬

‫وقت لمدة ‪ 45‬دقيقة من اآلن‪.‬‬

‫‪ ‬‬

‫وصيغتها كاالتى‬

‫‪ ( DateAdd‬الفاصل الزمني‪ ،‬رقم‪ ،‬تاريخ )‬

‫‪ ‬‬

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

‫رقـــــــــــــــــم ‪ :‬ويوضع الرقم الذى تريد اضافته للمتغير الذي قمت بتحديده‬

‫تــــــــــــــاريخ ‪ :‬ويوضع هنا الزمن الذي به المتغير موضح به القيمه الحاليه حتى يتم‬
‫اضافة الرقم إليه حسب المتغير الذي قمت بتحديده‬

‫‪ ‬‬

‫مثال ‪  : 1‬يقوم المثال التالي بإضافة شهر واحد إلى ‪ 31‬يناير‬

‫‪)"DateAdd("m", 1, "31-Jan-95‬‬

‫جدول اكود المتغيرات " الفواصل الزمنيه "‬

‫‪  yyyy‬السنة‬

‫‪ ‬‬

‫‪    q‬ربع سنوي‬

‫‪ ‬‬

‫‪   m‬الشهر‬

‫‪   y‬يوم من السنة‬

‫‪  d‬اليوم‬

‫‪  w‬يوم من األسبوع‬

‫‪  ww‬األسبوع‬

‫‪  h‬الساعة‬

‫‪I accept  ‬‬


‫‪Important Information‬‬ ‫‪  n‬الدقيقة‬
‫‪  s‬الثانية‬

‫‪ ‬‬

‫مثال ‪ : 2‬أذا اردت مثًال اضافة شهر الى القيمه الحالية للتاريخ‬

‫‪)DateAdd("m", 1, Date‬‬


‪3‬‬

‫‪‬‬

‫الدرس السابع‪ :‬دوال التاريخ‬


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

)السلسلة(‪CDate‬‬ ‫قام‬
‫"‪CDate("122010")="18-01-2234‬‬ ‫بنشر‬
‫فبراير‬
‫‪,20‬‬
‫هذه الدالة من أجل إرجاع تاريخ النظام الحالي‪.‬‬ ‫()‪ :Date‬تستخدم‬
‫‪2017‬‬

‫مثال‪:‬‬

‫"‪Date()="19/02/2017‬‬

‫‪ :DateDiff‬تستخدم هذه الدالة لحساب الفرق بين تاريخين‬

‫أول أيام األسبوع‪,‬التاريخ الثاني‪,‬التاريخ األول‪,‬رمز الفاصل الزمني(‪DateDiff‬‬



‪DateDiff("d","14/02/2017","19/02/2017")=5‬‬
‫في هذا المثال حسبنا الفرق بين التاريخين باأليام‬

‫‪ :DatePart‬تستخدم هذه الدالة للحصول على جزء معين من تاريخ‬


‫محدد لها‪(.‬سنة أو يوم أو شهر)‬

‫مثال‪:‬‬


)أول أسابيع السنة‪,‬أول أيام األسبوع‪,‬التاريخ‪,‬فاصل زمني(‪DatePart‬‬

‪DatePart("d","22/03/2017")=22‬‬

‪DatePart("m","22/03/2017")=3‬‬
‫‪DatePart("yyyy","22/03/2017")=2017‬‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪ :DateSerial‬تستخدم هذه الدالة إلرجاع متغير من نوع تاريخ من‬
‫ثالث متغيرات رقمية تمثل السنة والشهر واليوم ‪.‬‬

‫مثال‪:‬‬


)يوم‪,‬شهر‪,‬سنة(‪DateSerial‬‬
‫"‪DateSerial("1999","03","20")="20/03/1999‬‬

‫‪ :DateValue‬تستخدم هذه الدالة من أجل تحويل تعبير معين إلى‬


‫تاريخ ‪.‬‬

‫مثال‪:‬‬

‫)»التاريخ«(‪DateValue‬‬ ‫

‫)"‪DateValue("12 02 2016‬‬

‫‪ :Day‬تستخدم هذه الدالة‪ ‬إلرجاع رقما من ‪ 1‬إلى ‪ 31‬يمثل اليوم من‬


‫الشهرللتاريخ الممر لها ‪.‬‬

‫مثال‪:‬‬


)التاريخ(‪Day‬‬
‫‪Day("15/03/2016")=15‬‬

‫‪ :Hour‬تستخدم هذه الدالة‪ ‬إلرجاع رقما من ‪ 0‬إلى ‪ 23‬يمثل الساعة في‬


‫اليوم ‪.‬‬

‫مثال‪:‬‬


)الوقت(‪Hour‬‬
‫‪Hour("15:25")=15‬‬

‫‪ :Minute‬تستخدم هذه الدالة‪ ‬إلرجاع رقما من ‪ 0‬إلى ‪ 59‬يمثل الدقائق‬


‫في الساعة‪.‬‬

‫مثال‪:‬‬


)الوقت(‪Minute‬‬
‫‪Minute("15:25")=25‬‬

‫‪ :Second‬تستخدم هذه الدالة‪ ‬إلرجاع رقما من ‪ 0‬إلى ‪ 59‬يمثل الثواني‬


‫في الدقائق‪.‬‬

‫مثال‪:‬‬

‫‪I accept  ‬‬ ‫


)الوقت(‪Second‬‬
‫‪Important Information‬‬
‫‪Second("15:20:23")=23‬‬
‫‪ :Month‬تستخدم هذه الدالة‪ ‬إلرجاع رقما من ‪ 0‬إلى ‪ 12‬يمثل الشهر‬
‫في السنة‪.‬‬

‫مثال‪:‬‬


)التاريخ(‪Month‬‬
‫‪Month("12/11/2003")=11‬‬

‫‪ :Year‬تستخدم هذه الدالة‪ ‬إلرجاع رقما يمثل السنة‪.‬‬

‫مثال‪:‬‬


)التاريخ(‪Year‬‬
‫‪Year("12/12/2017")=2017‬‬

‫نكمل البقية فيما بعد إن شاء اهلل‬


‪4‬‬

‫‪...weeks later 4‬‬

‫‪‬‬

‫‪:IsDate‬‬

‫تستخدم هذه الدالة لفحص ما إذا كان المتغير الممرر لها تاريخ أم ال حيث‬
‫ص‬
‫ًا‬ ‫ًا‬
‫اتعيد ‪ true‬إذا كان المتغير تاريخ و تعيد ‪ false‬إذا لم يكن تاريخ ‪.‬‬
‫ل‬
‫ح‬

)»تعبير«(‪IsDate‬‬
‫ح‬

‪IsDate("12/03/2017")=True‬‬ ‫م‬
‫‪")=False‬أوفيسنا"(‪IsDate‬‬ ‫ا‬
‫د‬
‫ي‬
‫‪:Now‬‬
‫قام‬
‫بنشر‬
‫هذه الدالة إلستخراج تاريخ و وقت النظام الحاليين‪.‬‬ ‫تستخدم‬
‫مارس‬
‫‪,15‬‬
‫‪2017‬‬
‫)(‪Now‬‬

‪:‬و تكون النتيجة بالشكل التالي‬
‫‪15-03-2017 10:18:15‬‬

‫‪:Time‬‬

‫تستخدم هذه الدالة إلستخراج وقت النظام الحالي‪.‬‬

‫‪I accept  ‬‬ ‫


)(‪Time‬‬ ‫‪Important Information‬‬

‪:‬و تكون النتيجة بالشكل التالي‬
‫‪10:18:15‬‬

‫‪:Timer‬‬

‫تستخدم هذه الدالة إلستخراج عدد الثواني منذ منتصف الليل‪.‬‬

‫)(‪Timer‬‬

‫‪:MonthName‬‬

‫تستخدم هذه الدالة إلرجاع اسم الشهر المحدد ‪.‬‬


)»اختصار»‪« ,‬شهر«(‪MonthName‬‬

"مارس"=)‪MonthName(3,True‬‬
‫"أوت"=)‪MonthName(8‬‬

‫‪:TimeSerial‬‬

‫تستخدم هذه الدالة إلرجاع متغير من نوع تاريخ يحتوي على الوقت‬
‫لساعة و دقيقة و ثانية محددة‪.‬‬


)»ثانية»‪« ,‬دقيقة»‪« ,‬ساعة«(‪TimeSerial‬‬
‫‪TimeSerial(10, 56, 13)=10:56:13‬‬

‫‪:Weekday‬‬

‫تستخدم هذه الدالة إلرجاع متغير "عدد صحيح" يمثل رقم اليوم في‬
‫األسبوع‪.‬‬


)أول أيام األسبوع‪ ,‬التاريخ(‪Weekday‬‬
‫‪Weekday("15/3/2017", vbSunday)=4‬‬

‫‪:WeekdayName‬‬

‫تستخدم هذه الدالة إلرجاع اسم اليوم المحدد من األسبوع‪.‬‬


)»أول أيام األسبوع»‪« ,‬اختصار»‪« ,‬يوم من األسبوع«(‪WeekdayName‬‬
‫"الثالثاء"=)‪WeekdayName(3, True, vbSunday‬‬

‫و هذه هي القيم المستعملة لتحديد أول أيام األسبوع‪:‬‬

‫‪  vbUseSystem‬سيتم استخدام إعدادات النظام‬

‫‪  vbSunday‬يمثل يوم األحد‬

‫‪  vbMonday‬يمثل يوم االثنين‬

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪  vbTuesday‬يمثل يوم الثالثاء‬
‫‪  vbWednesday‬يمثل يوم األربعاء‬

‫‪  vbThursday‬يمثل يوم الخميس‬

‫‪  vbFriday‬يمثل يوم الجمعة‬

‫‪  vbSaturday‬يمثل يوم السبت‬

‫تم تعديل مارس ‪ 2017 ,15‬بواسطه صالح حمادي‬


‪7‬‬

‫الصفحه ‪ 1‬من ‪  3‬‬ ‫‪‬‬ ‫التالي‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬

‫‪Join the conversation‬‬


‫‪You can post now and register later.
If you have an account, sign in‬‬
‫‪.now to post with your account‬‬

‫‪)Enter your email address (this is not shown to other users‬‬

‫اضف صوره من رابط خارجي‬

‫اضف رد‬

‫‪  ‬مشاركة‬

‫‪17‬‬ ‫متابعين‬

‫الذهاب الي قائمه المواضيع‬ ‫‪‬‬

‫محتوي مشابه‬

‫مكتبة الموقع ‪ -‬بدائل دالة ‪ textjoin‬الموجودة في إكسل ‪ 2016‬لجميع إصدارات اكسل‬


‫بواسطه أ ‪ /‬محمد صالح

‫اعرض الملف
بدائل دالة ‪ textjoin‬الموجودة في إكسل ‪ 2016‬لجميع إصدارات‬
‫اكسل ‪
mastextjoin‬‬
‫بسم اهلل الرحمن الرحيم

‫‪ ‬السالم عليكم ورحمة اهلل وبركاته

‫‪ ‬موعدنا اليوم مع معلومة مفيدة جدا وخفيفة جدا ومهمة جدا في نفس الوقت

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪ ‬وهي تصميم بدائل دالة ‪ TEXTJOIN‬الموجودة في اكسل ‪ 2016‬وما بعده لجميع‬
‫إصدارات إكسل ألنها دالة معرفة ‪
. UDF‬‬
‫لمن يريد استخدام مزايا إكسل ‪ 2016‬في جميع إصدارات إكسل بداية من ‪2003‬‬
‫و ‪ 2007‬و ‪ 2010‬و ‪ 2016‬و ‪
2019‬‬
‫دالة احترافية لدمج النصوص مع وضع فاصل بين قيم الخاليا وتجاهل الخاليا‬
‫الفارغة ‪
mastextjoin‬‬
‫بدائل ‪ textjoin‬الموجودة في إكسل ‪ 2016‬وما بعده

‫اللهم انفعنا بما علمتنا وعلمنا ما ينفعنا

‫‪
a1mas#‬‬
‫‪
ostazmas#‬‬
‫‪
textjoin#‬‬
‫لماذا نستعمل دالة ‪ textjoin‬؟

‫نبدأ أوال بمعرفة أن هذه الدالة توجد في أوفيس ‪ 2016‬وما بعده ( أوفيس ‪)365‬‬
‫وهي دالة لدمج النصوص مع تجاهل الخاليا الفارغة وعدم تكرار الفاصل في حالة‬
‫إذا كانت الخلية فارغة‪
.‬‬
‫ولها ‪ 4‬وسيطات‪
 
:‬والصورة العامة لها هي‪
:‬‬
‫‪
TEXTJOIN(delimiter, ignore_empty, text1, [text2], …)
delemiter‬‬
‫محِد د

‫ًا‬ ‫ًا‬
‫(مطلوبة)
عبارة عن سلسلة نصية‪ ،‬إما أن تكون فارغة أو تكون حرف واحد أو أكثر‬
‫محاطًا بعالمات االقتباس المزدوجة أو مرجعًا إلى سلسلة نصية صالحة‪ .‬إذا تم‬
‫إدخال رقم‪ ،‬فسُي عامل كنص‪
ignore_empty
.‬‬
‫(مطلوبة)
إذا كانت ‪ ،TRUE‬فسيتم تجاهل الخاليا الفارغة‪
text1
.‬‬
‫(مطلوبة)
هي العنصر النصي المطلوب دمجه‪ .‬عبارة عن سلسلة نصية أو صفيف‬
‫من السالسل مثل نطاق من الخاليا‪
]... ,text2[
.‬‬
‫(اختيارية)
هي العناصر النصية اإلضافية المطلوب دمجها‪ .‬قد يكون هناك حد‬
‫أقصى يبلغ ‪ 252‬من الوسيطات النصية للعناصر النصية بما في ذلك ‪ .text1‬يمكن‬
‫أن يكون كل عنصر منها عبارة عن سلسلة أو صفيف من السالسل مثل نطاق من‬
‫الخاليا‪
.‬وإليكم هذا الفيديو لشرح الدالة وتوضيح كيفية استخدامها في إكسل‬
‫‪ 2016‬وما البدائل لدالة ‪ textjoin‬في إكسل ‪ 2013‬و ‪ 2010‬و ‪ 2007‬و ‪2003‬‬
‫وهي دالة ‪
 
mastextjoin‬‬
‫‪
 ‬‬
‫وال ينقصني سوى دعاؤكم لي وألهلي وأحبابي ‪-‬وأنتم منهم‪ -‬بخيري الدنيا واآلخرة‪.‬‬
‫ومشاركة الموضوع مع من يهمه األمر

‫لو بخل بها غيرك ما وصلت إليك

‫صاحب الملف
أ ‪ /‬محمد صالح
تمت االضافه
‪ 26‬ينا‪
2018 ,‬االقسام
قسم اإلكسيل‬
‫‪
 ‬‬

‫ترجمة النصوص ‪ Translate‬وتحويلها إلى صوت ‪ TTS‬في ‪ VBA‬باستخدام جوجل‬


‫بواسطه أ ‪ /‬محمد صالح

‫لكل عشاق الحديث في برمجة األوفيس المتقدمة ‪
VBA‬يسعدني أن أقدم لكم‬
‫شرح كود ترجمة جوجل ‪ 2019‬في فيجوال بيسك للتطبيقات ‪ vba‬الموجودة‬
‫ضمن حزمة ميكروسوفت أوفيس
وسيكون الشرح على األكسس ‪microsoft‬‬
‫‪
access 2019‬ومعالجة خطأ عدم ظهور الترجمة
التعرف على أكواد لغات العالم‬
‫‪ world languages codes‬الموجودة في ترجمة جوجل وعددها ‪ 105‬لغة‬
‫التعرف على أسماء لغات العالم باإلنجليزية وباللغة العربية وباللغة المحلية لكل لغة‬
‫دالة معرفة إليقاف تنفيذ الكود فترة من الثواني ‪ wait‬مثل ‪application.wait‬‬
‫الموجودة في إكسل
كتابة سطرين كود في سطر واحد
نطق النصوص من خالل‬
‫‪ vba‬بجميع لغات العالم ‪
text to speech‬ترجمة سجالت الجداول أو‬
‫االستعالمات من خالل ‪
ADO‬وغيرها الكثيييييير
اكتشفها بنفسك

 
 
 
 ‬رابط‬
‫القناة لمن لم يشترك معنا حتى اآلن
‪ ‬‬
‫‪ 
https://www.youtube.com/ostazmas2
 
#ostazmas‬‬
‫************

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

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

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫كنتيجة الفيديو

/////////////////‬‬
‫وتذكر معي الحكمة القائلة‪ :‬ال تعطني سمكة ولكن علمني كيف‪ ‬أصطاد‬
‫مكتبة الموقع ‪ -‬استخراج معلومات الرقم القومي تاريخ الميالد والمحافظة والنوع‬
‫بواسطه أ ‪ /‬محمد صالح

‫اعرض الملف استخراج معلومات الرقم القومي تاريخ الميالد والمحافظة والنوع

‫بسم اهلل الرحمن الرحيم‪ ،‬السالم عليكم ورحمة اهلل وبركاته‪ ،‬أسعد اهلل أوقاتكم من‬
‫جديد موعدنا اليوم مع معلومة مفيدة جدا ومتقدمة جدا‪ ،‬ومهمة جدا في نفس‬
‫الوقت‪ ،‬أال وهي شرح استخراج معلومات الرقم القومي تاريخ الميالد والمحافظة‬
‫والنوع ‪ national id info‬فتابعونا‪
.‬‬
‫شرح استخراج معلومات الرقم القومي تاريخ الميالد والمحافظة والنوع‬
‫‪
national id info‬‬
‫نبدأ أوال بمعرفة دالالت أرقام بطاقة الرقم القومي المصري‪
.‬‬

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

‫تابعونا

‫‪
 
 ‬‬
‫لإلجابة عن هذا السؤال وأكثر تابعونا في هذا الفيديو

‫ونتعرف أيضا على‪
:‬‬
‫أبسط معادالت للحصول على تاريخ الميالد والمحافظة والنوع من الرقم القومي

‫أكواد المحافظات في الرقم القومي

‫اقتصاص عدد معين من حروف الكلمة

‫كيف سيكون الرقم القومي في المستقبل سنة ‪ 2100‬؟

‫تحويل النص إلى تاريخ

‫معادالت ‪ if‬المتداخلة

‫معادلة البحث ‪
lookup‬‬

‫معرفة الرقم الزوجي والفردي عن طريق الدالة ‪


mod‬‬

‫التعامل مع فهارس المصفوفات ‪ array‬في ‪


vba‬‬
‫إنشاء دالة معرفة ‪ user defined function‬في إكسل

‫والكثير من المهارات األساسية في فيجوال بيسك للتطبيقات وفي معادالت إكسل

‫ال أريد أن أطيل عليكم تابعوا معي هذا الفيديو‪ ‬شرح طريقة تنفيذ إجراءين بزر أمر‬
‫واحد ‪ two macros by one button‬الشرح يعمل في إكسل ‪ 2016‬و ‪ 2013‬و‬
‫‪ 2010‬و ‪
2007‬‬
‫‪
 ‬‬
‫‪
 ‬‬
‫وال ينقصني سوى دعاؤكم لي وألهلي وأحبابي ‪-‬وأنتم منهم‪ -‬بخيري الدنيا واآلخرة‪.‬‬
‫ومشاركة الموضوع مع من يهمه األمر

‫لو بخل بها غيرك ما وصلت إليك

‫صاحب الملف
أ ‪ /‬محمد صالح
تمت االضافه
‪ 10‬فبر‪
2018 ,‬االقسام
قسم اإلكسيل‬
‫‪
 ‬‬

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


‫بواسطه ‪
omarAbdalrazaq‬‬ ‫‪O‬‬
‫السالم عليكم ورحمة اهلل

‫اساتذتنا واخواننا في هذا المنتدى الجميل

‫ارجو افادتي حول تعديل الكود الخاص بالسكنر‪
 ‬‬
‫المطلوب‪
:‬‬
‫تصغير حجم الصورة الماخوذة بالسكنر حيث ان كل صورة يبلغ حجمها ‪ 5‬ميجا

‫تنبيهي الى االخطاء الموجودة في الكود لغرض التعلم

‫هذا ولكم االجر والثواب

‫تحياتي للجميع

‫‪I accept  ‬‬


‫‪Important Information‬‬
‫‪Option Compare Database
Option Explicit
Dim‬‬
‫‪destinationFolder As String
Dim myScanPath As String
Dim‬‬
‫‪myScanPathWithID As String
Dim myImageFullName As String‬‬

You might also like