logo

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



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





27-02-2018 11:24 مساءً
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1581
رصيد العضو : 2
الدولة : مصر
الجنس :
تاريخ الميلاد : 1-9-1995
الدعوات : 5
قوة السمعة : 10925
الاعجاب : 14
موقعي : زيارة موقعي
السلام عليكم ورحمة الله وبركاته
تستكمل حلقات افتح الباب مع الاستاذ الكبير ياسر خليل
الحلقة السابعة

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

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

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

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


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


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


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


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


ممكن نعملها على شكل معادلة ونقول :

CODE
Area = Length * Width
</pre>

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

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

[p]
CODE
Function Area()



End Function


</pre>

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


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

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



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


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


CODE
Function Area(Length As Double, Width As Double)



End Function
</pre>


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



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



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


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


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



CODE
Area = Length * Width
</pre>

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


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


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


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


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


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



CODE
=area(A1,B1)
</pre>


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


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



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


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

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


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



&nbsp; &nbsp; Area = Length * Width



End Function
</pre>


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


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


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


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


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


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


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



&nbsp; &nbsp; If IsMissing(Width) Then



&nbsp; &nbsp; &nbsp; &nbsp; Area = Length * Length



&nbsp; &nbsp; Else



&nbsp; &nbsp; &nbsp; &nbsp; Area = Length * Width



&nbsp; &nbsp; End If



End Function
</pre>

[p]ما هذا ؟؟ هذا ماذا ؟


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


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


CODE
 &nbsp; &nbsp;If الشرط Then



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



&nbsp; &nbsp; Else



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



&nbsp; &nbsp; End If


</pre>

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


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


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


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


CODE
=area(A1)



</pre>

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


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


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


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


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


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


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


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


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





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




look/images/icons/i1.gif الحلقة السابعة الدوال المعرفة UDF
  28-02-2018 12:52 صباحاً   [2]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1581
رصيد العضو : 2
الدولة : مصر
الجنس :
تاريخ الميلاد : 1-9-1995
الدعوات : 5
قوة السمعة : 10925
الاعجاب : 14
موقعي : زيارة موقعي
المشاركة الأصلية كتبت بواسطة: عبدالجيد يعنى مافيش ملف مرفق أو ملف جاهز بالمرة
اصل انا لسا هقعد أقرا كل دا
وكمان عايزينى أطبقة
دا أنا ماصدقت خلصت دراسة
عايزنى أذاكر من جديد
مش كفاية الشغل كل يوم
وبعدين كنت ممكن حطيت الاكواد فى مثال وخلاص
طبعا انا بتكلم بلسان ناس كل لما تشوف دروس البرمجة و vba تقعد تحبط اللى حواليها
أقول لهم مع أكاديمية الصقر مش تقدر تغير الموقع
فاصل ونواصل ماترحوش لحته تانية
عزيزى عبدالجيد
دا شرح لتبسيط الvba يعنى الهدف هو توصيل المعلومه للناس بأسهل الطرق الممكنة وليس اعطاء الكود فحسب والا ميبقاش درس (لا تعطنى سمكه ولكن علمنى كيف اصطادها)
والهدف من كتابة الكود هو التعود عليه ودا افضل للمتعلم لتثبيت المعلومه
بالإضافه اننا كلنا دايما بنتعلم وهنفضل نتعلم لبقية حياتنا والدراسه ليست نهاية العلم بل بدايه جديده لبحر من العلم
قال الله تعالى (وقل رب زدنى علما)




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

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




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

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




توقيع :الصقر

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


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




اضافة رد جديد اضافة موضوع جديد




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









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

الساعة الآن 02:16 AM