أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
ashraf_hertlion hassona229-- لا تميز خلال هذه الفترة YasserKhalil مطلوب تعديل الكود للطباعة اكسيل اسئله واجابات


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





الحلقة السابعة الدوال المعرفة UDF

السلام عليكم ورحمة الله وبركاته تستكمل حلقات افتح الباب مع الاستاذ الكبير ياسر خليل الحلقة السابعة .................... ..



27-02-2018 11:24 مساء
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 90
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 

السلام عليكم ورحمة الله وبركاته
تستكمل حلقات افتح الباب مع الاستاذ الكبير ياسر خليل 
الحلقة السابعة

........................................................................................................................................

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

 عنوان حلقة اليوم (هيا بنا نلعب ونبني !)

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

 
 كلنا عارفين إن برنامج الإكسيل بيوفر لنا عدد كبير جدا من الدوال الجاهزة اللي نقدر نستفيد بيها بشكل كبير ، وكمان فيه إضافات Addins بتكون فيها دوال يمكن استخدامها .. لكن مع الوقت هتلاقي نفسك محتاج تعمل دالة (تبني دالة ) بحيث توفر لك الوقت والجهد ..

 
النوع ده من الدوال اللي بتبنيه بنفسك بيطلق عليه (الدوال المعرفة UDF ودي اختصار لـ User Defined Function ) ، وممكن نقول عليها (دوال مخصوصة .. يعني بالبلدي كدا دوال تفصيل .. بنفصلها بحيث تناسب احتياجتنا)

 
هناخد مثال بسيط عشان نفهم إزاي نتعامل مع بناء الدوال : أول شيء لازم يكون عندك المعطيات اللي هتشتغل بيها .. لو قلنا مثلا عايزين نعمل دالة نحسب بيها مساحة المستطيل ..يبقا الأول نعرف معادلة مساحة المستطيل Area = (الطول * العرض) (محدش يكون نظره ضعيف ويقرا العرض من غير نقطة ، لأحسن تودونا في داهية)

 

يبقا المعطيات عندي : الطول والعرض ، هنقول الطول Length والعرض Width .. دي طبعا هتكون متغيرات لأننا مش عارفين قيمتهم كام ، ولأن قيمتهم مش ثابتة ؛ فنطلق عليهم (المتغيرات)


 ممكن نعملها على شكل معادلة ونقول :
 
Area = Length * Width

 خطوات البناء : default_wink2

 هنفتح محرر الأكواد وندرج موديول جديد ونستعد لعملية البناء ..ركزوا معايا يا أحباب

 
Function Area()



End Function

أول شيء نكتب كلمة Function مش Sub يا صالح .. إحنا هنشتغل على دالة يبقا نكتب Function أما كلمة Sub فدي بتكون للإجراء الفرعي ..وبعدين نترك مسافة (بالمسطرة أكيد) ونكتب اسم للدالة .. هنسميها هنا اسم معبر Area لأننا عايزين نحسب المساحة وبعدين لما تضغط Enter هتلاقي محرر الأكواد عمل قوسين بعد اسم الدالة وقفل بالجملة End Function (ومننساش دايما القفلة مطلوبة ..لازم يكون تقفيلك مظبوط)


 ما بين السطرين اللي اتكتبوا دول هتبدأ تكتب الأكواد المطلوبة لتنفيذ العملية الحسابية لحساب مساحة المستطيل ...
 

بس قبل ما نبدأ يا ريت نحط مؤشر الماوس بين القوسين (ايه ده هما القوسين دول طلعلهم لازمة .. أنا كنت مفكرهم زينة وشكل .. حاجة تحلي شكل المحرر زي غترة كدا !) ..

 

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


 هنكتب اسم المتغير ونوعه زي كدا

 
Function Area(Length As Double, Width As Double)



End Function
 

وإحنا بنكتب المتغير وبعديه كلمة As أول ما ناخد مسافة ، هنلاقي فيه قايمة ظهرت لي عشان أختار منها (ممكن نطنشها ..نتجاهلها) أو ممكن نستفيد منها إننا نشوف الكلمة اللي عايزينها ولما نلاقيها نضغط عليها Double Click يعني دبل كليك(شفتوا الترجمة دي .. مش أي حد يترجم خلوا بالكم) ، لما نضغط دبل كليك عليها هنلاقيها اتكتبت ، يا إما نضغط Tab من لوحة المفاتيح ..

 

أول متغير اسمه Length اللي هو خاص بالطول ، وحددنا نوعه بـ Double ودا زي ما عرفنا بيستخدم مع الأرقام العشرية الطويلة . 

 

تاني متغير اسمه Width وبردو حددناه نفس النوع .. ومننساش عشان الأمور تكون صحيحة بنضع فاصلة بين المتغيرين ..عشان عمنا المحرر ميحصلش عنده لبس !!

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

نكتب السطر اللي جاي ده ما بين البداية والنهاية 

 
Area = Length * Width

يا ريت بعد إذنكم بلاش كسل - محدش ياخد السطر كوبي ويروح يعمل Paste - لا أنا عايز أتعبكم - ما أنا تعبان من الكتابة - اتعبوا شوية انتو كمان .. كله يكتب (اكتب يا حسين .. سجل كل كلمة بيقولها !!) ..
 

الفايدة من الكتابة إننا أول ما نكتب كلمة Area وناخد مسافة ، نلاحظ مستطيل أصفر ظهر لي بيشرح لي متغيرات الدالة .. حلوة ولا ملهاش فايدة .. الفايدة إنها تعتبر زي وسيلة مساعدة ، عشان لما نحب نستخدم الدالة دي في كود تاني أو دالة تانية .. (معنى الكلام اللي بقوله إننا ممكن نبني دالة ونستخدمها في دالة تانية أو كود أو خلافه ..كنوع من التيسير)
 

لو كتبنا أول حرف في كلمة length أو width بحرف small ، هتلاقي المحرر بعد ما تخلص بيحول الحروف الأولى دي لحروف Capital ، ودي سببها إن الكلمات دي متعرف عليها قبل كدا في أول الدالة.
 

كدا تمام تم بناء الدالة (بالسهولة دي ! أيوا بالسهولة دي .. الفكرة مش معقدة .. كلنا اللي إحنا عايزينه مساحة المستطيل والمساحة = الطول * العرض (بس خلاص على رأي شعبولة)
 

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

 

تطبيق على الدالة : قم بوضع القيمة 9 في الخلية A1 والقيمة 6.5 في الخلية B1 ، وبعدين في الخلية C1 قم بعمل معادلة للدالة اللي إنت بنيتها:

 
=area(A1,B1)
 

نخلي بالنا ..لما نستخدم الدالة بنستخدمها بنفس الشكل اللي بنيناها بيه ، يعني المتغير Length بييجي بعديه فاصلة ثم المتغير Width ..نشوف الناتج هنلاقية 58.5 .. وبكدا عرفنا مساحة المستطيل بدلالة الطول والعرض ..
 

نجرب نمسح الخليةB1 ونشوف الناتج ، هنلاقي الناتج صفر ، ودا طبيعي لأن أي رقم * فراغ = صفر

 

بس أنا عايز أحط شروط مختلفة ، أنا عايز الناتج ميكونش صفر .. لما يكون العرض مش موجود يضرب الطول في نفسه ..(ايه الكلام الصعب ده )


 نرجع تاني للدالة ونبدأ نشوف ايه اللي ممكن نعمله ..؟

 في الحالة دي طالما إن إنت عايز تخلي العرض اختياري وليس إجباري ، يبقا هتحدد الكلام ده للمحرر ، وتقوله Optional (اختياري)


 
Function Area(Length As Double, Optional Width As Variant)



    Area = Length * Width



End Function
 

هنا غيرنا نوع المتغير إلى Variant، تحسبا إنك ممكن تترك الخلية اللي فيها العرض فارغة ..
 

واحد هيقول : خلااص ، هرد أقوله : لسه !
 

default_cool2 طالما إننا خلينا العرض اختياري ، يبقا لازم نحط شرط ، ونشوف الشرط إذا تحقق يعمل ايه ، ولو الشرط متحققش يعمل ايه ..!!

 

نرجع لمرحلة الإعدادي لما كنا بناخد قاعدة IF بمعنى إذا أو لو (وعرفنا أيامها إن لو حرف شعلقة في الجو) ..

 

جملة IF في البرمجة : بييجي وراها شرط ، ولو الشرط اتحقق ايه اللي يحصل ، ولو متحققش ايه اللي يحصل .

 

الشرط اللي هنحطه .. في حالة عدم وجود العرض يعمل ايه ؟ يضرب الطول في نفسه (الطول * الطول) ، طيب لو كان موجود العرض ، يبقا يضرب الطول * العرض
 

Function Area(Length As Double, Optional Width As Variant)



    If IsMissing(Width) Then



        Area = Length * Length



    Else



        Area = Length * Width



    End If



End Function

ما هذا ؟؟ هذا ماذا ؟
 

هذا هو شكل الدالة بلغة البرمجة ، زي ما فهمناها نترجمها .. بعد كلمة If بييجي الشرط ، والشرط نخلي بالنا يا إما True يا إما False .. لو True ينفذ السطر اللي بعد كلمة Then مباشرة ، لو False ينفذ السطر اللي بعد سطر Else
 

وجملة If الشكل العام ليها زي كدا
 

    If الشرط Then



        الكود في حالة تحقق الشرط



    Else



        الكود في حالة عدم تحقق الشرط



    End If

محدش ياخد الكود ده في محرر الأكواد (دا للتوضيح .. واحد مش معبرني وبردو بياخد الشكل ده كوبي ورايح على محرر الأكود ..سيبوه يتصدم !!)
 

أعتقد الصورة كدا بقت واضحة ..
 

استعملنا في الشرط كلمة IsMissing ، الترجمة الحرفية ليها هل مفقود ؟ هل مفقود العرض ؟ -- يعني هل المتغير المسمى العرض مفقود ؟ لو كان مفقود هيتم حساب المساحة بضرب الطول * الطول ، ولو كان موجود يطنش الجزء الأول وينفذ الجزء التاني ، ويضرب الطول * العرض

 

نرجع لورقة العمل ونعدل المعادلة ونخليها :
 

=area(A1)

كدا مفيش المتغير الخاص بالعرض ، فتقوم الدالة تضرب الطول * الطول ، ويطلع الناتج 81
 

لو فضلت المعادلة زي ما كانت في الأول هيكون الناتج صفر ..

 

طيب دا هيكون واجب : default_eek2 عايزين نضيف شرط وهنستخدم فيه معامل الشرط OR ..بحيث لو كان العرض = 0 يضرب الطول * الطول ...

 

سامع واحد من اللي بيقروا بيدعي عليا ، وبيقول حرام عليك طلعت عنينا عشان نعرف مساحة المستطيل ، دا أنا أرحم لي إن أحسبها بايدي وأريح بالي ..
 

معلش استحملوني ! دا كان مجرد مثال عشان نفهم إزاي نقدر نبني دالة ..

 

واجب تاني غير الأولاني (مش هرحمكم!) : قم ببناء دالة بسيطة ، بحيث لو قيمة معينة أكبر من أو يساوي 100 يكتب ممتاز ، لو أقل من 100 يكتب جيد

 

وإلى لقاء مع حلقة جديدة من حلقات افتح الباب واجري ورايا default_dance1

 

كان معكم البنا أبو البراء من شركة مؤسسة أكاديمية الصقر لأعمال البناء ..

 

إلى أن ألقاكم بخير .. دمتم في حفظ الله 
















27-02-2018 11:39 مساء
مشاهدة مشاركة منفردة [1]
عبدالجيد
عضو محترف
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 26-08-2017
رقم العضوية : 194
المشاركات : 387
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 15-2-1986
الدعوات : 2
يتابعهم : 158
يتابعونه : 37
قوة السمعة : 2958
موقعي : زيارة موقعي
 offline 
look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF
يعنى مافيش ملف مرفق أو ملف جاهز بالمرة
اصل انا لسا هقعد أقرا كل دا
وكمان عايزينى أطبقة
دا أنا ماصدقت خلصت دراسة
عايزنى أذاكر من جديد
مش كفاية الشغل كل يوم
وبعدين كنت ممكن حطيت الاكواد فى مثال وخلاص
طبعا انا بتكلم بلسان ناس كل لما تشوف دروس البرمجة و vba تقعد تحبط اللى حواليها
أقول لهم مع أكاديمية الصقر مش تقدر تغير الموقع
فاصل ونواصل ماترحوش لحته تانية
 

28-02-2018 12:52 صباحا
مشاهدة مشاركة منفردة [2]
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 90
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 
look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF
المشاركة الأصلية كتبت بواسطة: عبدالجيد
يعنى مافيش ملف مرفق أو ملف جاهز بالمرة
اصل انا لسا هقعد أقرا كل دا
وكمان عايزينى أطبقة
دا أنا ماصدقت خلصت دراسة
عايزنى أذاكر من جديد
مش كفاية الشغل كل يوم
وبعدين كنت ممكن حطيت الاكواد فى مثال وخلاص
طبعا انا بتكلم بلسان ناس كل لما تشوف دروس البرمجة و vba تقعد تحبط اللى حواليها
أقول لهم مع أكاديمية الصقر مش تقدر تغير الموقع
فاصل ونواصل ماترحوش لحته تانية
 

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

28-02-2018 01:45 صباحا
مشاهدة مشاركة منفردة [3]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36622
عدد الإجابات: 255
 offline 
look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF
بارك الله فيك أخي العزيز إسلام وجزاك الله خيراً

وأرجو الله أن ينفع بهذه الدروس وأن يجعلها في ميزان حسناتنا يوم القيامة
تقبلوا وافر تقديري واحترامي

28-02-2018 07:52 صباحا
مشاهدة مشاركة منفردة [4]
الصقر
مدير المنتدى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 2
المشاركات : 1824
الجنس : ذكر
الدعوات : 21
يتابعهم : 0
يتابعونه : 748
قوة السمعة : 19987
موقعي : زيارة موقعي
عدد الإجابات: 2
 offline 
look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF

جزاكم الله خيرا اخى اسلام على هذا المجهود
وجزا الله اخى الحبيب ياسر خيرا على هذا الشرح الرائع 3

توقيع :الصقر

اخى العضو الكريم
اذا كنت ترى ان المنتدى مفيد لك
فكن سفيرا لنا بدعوة الاخرين للانضمام معنا
فالدال على الخير كفاعله


28-02-2018 05:12 مساء
مشاهدة مشاركة منفردة [5]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10455
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 536
قوة السمعة : 36622
عدد الإجابات: 255
 offline 
look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF
تسلم حبيبي الغالي حسام خطاب .. شرفني مرورك العطر بالموضوع
تقبل وافر تقديري واحترامي




الكلمات الدلالية
الحلقة ، السابعة ، Excel ،


 










اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 12:17 صباحا