نجوم المشاركات
Popular Content
Showing content with the highest reputation on 01/17/15 in all areas
-
إخوتي نحن هنا كلنا أخوة لا فرق بيننا .. كلنا عائلة واحدة ، وكل متميز في جانب ، وكلنا نكمل بعضنا البعض بارك الله في أخوتنا وفي أسرتنا الأوفيسنية تقبلوا تحياتي3 points
-
السلام عليكم ورحمة الله تعالى وبركاته بعد الإصدار الذي طرحته قبل أيا والذي تحت عنوان هدية لمحبي الألوان والتصميم فورم لمعرفة رموز الالوان أقدم لكم الإصدار جديد من فورم RGB Color Codes Chart واجهة الفورم نأتي الأن لشرح الفورم 1) نقوم بإنشاء 3 ============ ScrollBar نسميها كالتالي: RGB_Red RGB_Green RGB_Blue خصائصها موضحة في الصورة التالية أنا إخترت RGB_Red وهكذا مع بقية ScrollBar 2) نقوم بإنشاء 3 =========== TextBox نسميها على النحو التالي TRed TGreen TBlue خصائصها موضحة في الصورة التالية أنا إخترت TRed وهكذا مع بقية TextBox 3) نقوم بإنشاء ========== Label نسميه بإسم RGB_Color خصائصه موضحة في الصورة التالية 4) نقوم بإنشاء ========== CommandButton نسميها بإسم Cmd_Copy خصائصه موضحة في الصورة التالية نأتي إلى المرحلة المهمة وهي إدراج الاكواد 1) في حدث ScrollBar مثال: أنا أخترت ScrollBar الأحمر وهكذا مع باقي ScrollBar Private Sub RGB_Red_Change() RGB_Color.BackColor = RGB(TRed, TGreen, TBlue) 'والقيم تأخذ من مربعات النص الثلاث RGBالليبل المسمى(RGB_Color) عند تعبئة بالون يساوي Me.TRed = RGB_Red ' هنا قيمة مربع النص تساوي قيمةScrollBar End Sub 2) في حدث TextBox مثال: أنا أخترت TextBox الأحمر وهكذا مع باقي TextBox Private Sub TRed_Change() RGB_Red = Me.TRed ' هنا قيمة( ScrollBar) تساوي قيمة مربع النص End Sub 3) في حدث CommandButton زر النسخ Cmd_Copy نستعمل الكود التالي Private Sub Cmd_Copy_Click() Dim myClipbd As New DataObject With myClipbd .SetText "RGB" & " " & "(" & Me.TRed & "," & " " & Me.TGreen & "," & " " & Me.TBlue & ")" .PutInClipboard End With MsgBox "تم النسخ بنجاح" End Sub عند لصق الكود يكون على الشكل التالي RGB (150, 103, 53) أتمنى الشرح والفكرة نالت إعجابكم تم بحمد الله وتوفيقه أترككم مع الملف المرفق RGB Color New.rar2 points
-
فيديو لاغنية لرسول الله فى ورقة اكسل ملحوظة الملف اكسل 2007 من خيارات اختار تمكين المحتوى ليعمل الفيديو اذا لم يعمل الفيديو قم بتنفيذ التالى غدا ان شاء الله ملف اكسل لعمل الفيديو من خلال فورم لرسول الله محمد نبى الله2 points
-
جزاك الله خيرا مبدع دائما فشكرا لك2 points
-
2 points
-
ما شاء الله تبارك الله ولا قوة الا بالله جزاك الله خيرا استاذ الجموعي على العمل الاكثر من رائع... colors give life flavor2 points
-
السلام عليكم ألق نظرة على الملف المرفق لعل فيه ما تريد (إن كنت قد فهمت مطلوبك)... بن علية الملف المرفق : اسماء 2014.rar2 points
-
السلام عليكم ورحمة الله تعالى وبركاته اولا بعد الحمد لله الذى تتم بنعمته الصالحات فسبحان الله الحنان المنان الذى هدانا وما كنا لنهتدى لولا ان هدانا الله عزوجل له الحمد حمدا كثيرا طيبا طاهرا مباركا فيه له وحده الحمد كما ينبغى لجلال وجهه ولعظيم سلطانه ثانيا ادين بالفضل بعد رب العزة سبحانه وتعالى وللكثير من اساتذتى رواد هذا الصرح الشامخ فلولا الله ثم اساتذتى الكرام لما وصلت الى هذا الحد بعد كل الشكر والتقدير اهنئ نفسى واياكم بما وصلت اليه الموضوع بإختصار هو برنامج الصلاحيات والتحكم بالمستخدمين بالفعل أرهقنى موضوع الصلاحيات هذا لو كان اختياراً لتركته وما ترددت فى ذلك لكن تبقى الضرورة وحتمية العمل به هى المحرك الأول والأخير فكانت محاولات الإستماتة حتى إنى فى إحدى اللحظات توقعت أننى لن ولم أحاول البحث أو محاولة إنشاء الصلاحيات بعد هذه اللحظة إستعصى الأمر لدرجة أنني جربت نسبة 90 فى المئة من كل ما هو مقترح على النت لحل تلك المشكلة العويصة مشكلة الصلاحيات وكما لاحظت يعانى منها الكثير غيرى لكن من الله على سبحانه وتعالى بعلمه وفضله فتوصلت لبرنامج Users maker الإصدار الثانى الذى قيل عنه انه يعمل مع منتجات الاوفيس ابتداء من 2007 وحتى 2013 ولكن من وجهة نظرى البرنامج فقير وكنت دائما أقع فى المشاكل بسببه حتى قررت أن أفتح النسخة وأحاول التعديل عليها بما يتماشى ويتناسب مع متطلباتى وأظنها متطلبات اغلب المشاركين كما لاحظت من تساؤلاتهم وإليكم أقدم لكم البرنامج بإصداره الثالث من تعديلى الشخصى وإضافتى التى لم يسبقنى إليها أحد فحاولت تلافى الكثير والكثير من التعقيدات أترك لكم التجربة والتحليل وفى إنتظار الرد للعلم حافظت على حقوق المبرمج الأصلى للبرنامج بارك الله فى علمه الأستاذ القدير محمد مهند العبادى أتحدى وجود إصدار مشابه على الانترنت لما اطرحه عليكم الأن طبعا البرنامج حجمه كبير لن أستطيع إرفاقه عن طريق المرفقات ولذلك أطلب على استحياء من أساتذتنا الكرام المسئولين عن امور المنتديات بكل الحب والود والتقدير بعد تحليل البرنامج والتأكد من فعاليته بشكل جيد وخلوه من الأخطاء إن خلا فالكمال لله وحده إعادة رفع البرنامج على سيرفر المنتدى حتى يكون مرجع فمواقع الرفع المجانية غير مستقرة معلومات هامه جدا جدا جدا عن البرنامج بعد عمل اى برنامج خاص بكم من خلال هذه الاداة Users maker -Third Edition أولا -- من نموذج الدخول أضفت عدد اثنين مستخدمين لكل منهم صلاحيات خاصة وهم مخفيين لا يظهروا بالبرنامج إطلاقاً فى الوصع الطبيعى لعمل البرنامج المستخدم الاول مميزاته الدخول على لوحة تحكم صلاحيات المستخدمين البيانات للدخول اسم المستخدم / admin كلمة المرور / 2015 ثانياً -- المستخدم الثانى مميزاته الدخول على نموذج خاص لإلغاء تفعيل زر Shift أو تمكينه وكذلك إخفاء الجداول والإستعلامات وإظهارها البيانات للدخول اسم المستخدم / superadmin كلمة المرور / 2015 وفى النهاية إن كفيت ووفيت فمن فضل الله وأن ذللت وأخطأت فمن هوان نفسى وقلة حيلتى اسالكم بكل الحب والتقدير إن رأيتم منى خطأ فتجاوزوا عنه بحلم أو صححوه لى بعلم وفى النهاية أعتذر للإطالة جزاكم الله عنى كل الخير روابط تحميل اولا: موقع ...... ميديا فاير ........ إضغط هنا للتحميل accdb for Access 2007- 2010 - 2013 موقع ...... ميديا فاير ........ إضغط هنا للتحميل mdb for Access 2000 - 2002 - 2003 ثانيا : موقع ...... بن الخليج ........ أضغط هنا للتحميل accdb for Access 2007- 2010 - 2013 موقع ...... بن الخليج ........ إضغط هنا للتحميل mdb for Access 2000- 2002 - 2003 اسألكم الدعاء للأستاذ محمد مهند العبادى المبرمج ولوالديه بظهر الغيب كما أطلب منكم على استحياء أن تتذكرونى بدعواتكم الصالحات لوالدى واللهم كما جمعتنى بصحبتكم الطيبة فى الدنيا دون أن أساله اللهم لا تحرمنى منهخا فى الجنة أنا أسألك آمين ..آمين ..آمين أخوكم العبد الفقير إلى الله محمد عصام1 point
-
أبدأ بحمد الله أولا وأخيرا على ما انعم ووفق وأصلي واسلم على الرحمة المهداة والسراج المنير نبينا محمد وعلى آله وصحبه وسلم موضوع اداراة الأيجارات يشغل بال الكثيرون ممن يعملون او مهتمين بمجال العقارات وبعد طلب لاخي الفاضل / محمود السيد في تصميم برنامج لادارة الايجارات ومتابعة تحصيلها وابرام العقود وما الي ذلك من العمليات المتعلقة بالموضوع وبالاخص في العقارات المتعددة التي تحتاج الي متابعة دورية وفقني الله سبحانه وتعالي بعمل هذا البرنامج المتواضع وطرحته اليوم لتناقش حوله لتطويره واكمال النقائص فيه وادعوا الله ان يكون فيه النفع للسائل او المهتم بالمجال هدية الترقية لجميع معلميني الافاضل و اخواني واحبائي بالمنتدي وقمت بعمل شرح مبسط لخيارات البرنامج المتعددة ليكون البرنامج مطروح للجميع ومحل دراسة لتطويره ان شاء الله تعالي ولا تنسونا بدعوة صالحة بظهر الغيب بصلاح الحال وجمعة مباركة ويسعدني ملاحظاتكم وأرائكم لتطوير البرنامج اخيكم // ضاحي الغريب برنامج الايجارات الاصدار الاول تجريبي - ضاحي الغريب.rar1 point
-
بسم الله الرحمن الرحيم أساتذتى بالمنتدى و ألاخوة الزملاء كل عام وانتم بخير بمناسبة العام الجديد مما لا شك فيه أن الأهداء يقدم الى أغلى شخص لدى الانسان وبما انه اغلى شخص فلابد من تقديم أغلى هدية يملكها فسمحو لى ان اقدم أغلى ما املك واعز ما أملك وهو برنامج EMA الى أغلى منتدى . منتدى أوفيسنا هذا الصرح العظيم الذى شرفت بالانضمام اليه أهداء برنامج EMA برنامج EMA تم تصميمة بعمل متواصل على مدار 300 يوم بمعدل لا يقل عن 5 ساعات يوميا معظمها كان البحث والتفكير وكيفية التنفيذ فأن أحسنت فمن الله وما توفيقى الا بالله وأن أخطأت فمن نفسى والشيطان والحمد لله الذى بنعمته علينا تتم الصالحات تم رفع البرنامج بتاريخ 29-9-2014م وهذا كان الاصدار الاول من الجزء الاول للبرنامج وبعد التواصل مع الاعضاء ومشاركتى لأرائهم طلب منى بعض الاضافات الاخرى والحمد لله تم ذالك أقدم لكم الاصدار الثانى من الجزء الاول أتمنى أن يحوز اعجابكم ورضاكم البرنامج به أمكانيات وخيارات كبيرة جدا تم تصميمه على اعلى مستوى من الرقابه والتحكم فى المدخلات أنا الحمد لله عملت على برامج كبرى وهذا البرنامج عصارة خبرة محاسبية وأنتظرو منى قريباً الجزء الثانى للبرنامج (المخازن والمبيعات والمشتريات) فى نفس الملف وأخيرا وليس أخراً البرنامج بين أيديكم لا يتم فتج البرنامج الا فى الساعه 12ص أى بالليل 2015/1/1م لأنه نسخة عام 2015م ملحوظه مهمه جدا 1-يفضل تشغيل البرنامج على 2007 2-لا يتم تغيير اسم البرنامج نهائيا لانه لا يفتح عند تغيير- الاسم (EMA)فقط فى بعض الاحيان عند التنزيل يكون EMA 1 فى هذه الحالة يحذف 1 أن شاء الله نرفق لكم شرح لكيفية العمل على البرنامج اسم المستخدم / الدعم الفنى الباسورد / 123 EMA.zip1 point
-
السلام عليكم ورحمة الله وبركاته سوف نقوم بإذن الله تعالى بعمل سلسة من الفيديوهات التعليمية سيكون قسم منها على شكل دروس متلاحقة أجزاء ومنها مواضيع مختلفة متنوعة في فيديو واحد سيتم بعون الله تعالى نشرها بشكل منظم مرفقة بملفات العمل الخاصة بها أسأل الله أن أكون قد أسهمت في تقديم شيء أحتسبه عنده سبحانه بما أن التثبيت للمشاركة بدأ بعد نشر عدة فيديوهات سوف نتبع سياسة فيديو جديد + فيديو قديم الى تغطية الفيديوهات السابقة في نفس المشاركة هذه وبعدها يبدأ كل جديد **************************** فيديو اليوم الجديد اسخراج كشف حساب الفيديو الثالث مشاهدة مفيدة وممتعة1 point
-
1 point
-
بالفعل أخى الحبيب تمت التجربة وعملت بكفاءة ومفيش مجاملات فى مكتبة عظيمة تضم كم كبير جدا جدا من الأكواد الهامة شكرا لمجهودك العظيم وذادك الله من العلم الكثير والكثير وجزاك الله كل خير على إهتمامك1 point
-
الحمد لله الذي بنعمته تتم الصالحات وفق الله الجميع لما فيه الخير والصلاح لجميع المسلمين تقبل تحياتي :fff:1 point
-
1 point
-
الاستاذ على دى شهادة من استاذ كريم له قدره واعتز بها وهى بمثابة وسام شرف على صدره ولكن كما عهدناك طيب الكرم لين اللسان كريم النفس جزاكم الله عنى كل الخير وايضا انتظر مشاراكات بعرض القصور من وجهة نظركم او الافكار للتعديل للوصول الى ما هو افضل اممممممممممم اعتقد كان باين من مشاركاتى الاولى فى المنتدى دى انى اول مره افتح اكسس حضرتك من ضمن الاساتذه الكرام الذين ادين لهم بالفضل بعد رب العزة فيما وصلت اليه1 point
-
اخى واستاذى ابو آلاء والله صدق رسول صلى الله عليه وسلم كل اناء بما فيه ينضح ولانكم اهل الخير والكرم والجود واصحاب قلوب حنونه ورقيقه ونفوسكم طيبة تقدمتم بتلك المقدمة التى بدأتم بها ولكن انا لا اعلم عن البرمجة شئ فمنكم اتعلم وبكم اهتدى واقتضى ولأصدقكم القول سجلت فى الكثير من المنتديات وقد يكون اعضائها اكثر وتفاعلاتها اعلى ولكن اقسم بالله معظم ما وجدته اناس تحفظ وتضع اجاباتهم بناء عن حفظ وليس فهم بعكس هذا المنتدى الطيب والكريم بأهله اقسم لكم بالله الذى لا اله الا هو احس بألفة وود ودفئ فى هذا المنتدى ناهيكم عن فضل اساتذة اجلاء يتمتعون بكرم وسخاء لم اجد له مثيل فكل كلمات الشكر والتقدير لا ولن تكفيهم وتقف احرف اللغة عاجزة عن تكوين عبارات الشكر والعرفان والتقدير لهم أما عن نفسى اخى الحبيب فما أنا إلا عصفور ييرتشف قطرات قليلات من بحور علمكم فجزاكم الله عنى وعن أمة محمد صلى الله عليه وسلم كل الخيــــر فوضع اسمى وذكره مع اساتذة عظماء هذا لا ينبغى اسأل الله لكم السداد والرشاد والتوفيق والصلاح إن شاء الله اخوك محمد عصام1 point
-
الاستاذ الفاضل أبوالآء تحية طيبة جزاك الله خيرا على الكلمات الرقيقة التي تقدمت بها في بداية الموضوع البرنامج رائع وشامل بالنسبة للمراجعة : تم مراجعة جزء من البرنامج واتضح التالي 1- عند ادخال بيانات الادارة والضغط على حفظ ثم إلى لوحة التحكم يظهر نموذج ازرق به 2 مربع نص فما هي فائدة هذا النموذج في الظهور 2- بالنسبة لعملية البحث عن طريق الاسم ورقم البطاقة يعمل جيدا مع الاسم ولا يعمل مع رقم البطاقة وعليه يجب اضافة الشرط التالي في الاستعلام Qrygyab Like "*" & ClrText([forms]![FrmSrchgyab]![txtSearch]) & "*" لكي يصبح كما بالشكل الموجود بالصورة المرفقة لكي يعمل البحث مع رقم البطاقة1 point
-
الأخ الفاضل سلامي غنام مشكور على مرورك العطر ، وأرجو أن تكون قد استفدت من الحلقات بإذن الله الأخ حمددي أشكرك على كلماتك المشجعة وعلى حديث المصطفى صلى الله عليه وسلم وأسأل الله أن يكون العمل لوجهه خالصا ، وإن شاء الله نستكمل الحلقات ، لكني مشغول قليلا في الامتحانات وفي مكتبة الصرح في حقيقة الأمر حيث أنها مكملة لما نقوم به. الأخت الفاضلة شيماء وجزيت خيراً ، وأهلاً بك تلميذة معنا وأقصد معنا فأنا تلميذ مثلكم أتعلم وأنقل ما أتعلمه بأسلوبي فقط - هذا كل ما أفعله - وإن شاء الله انتظروا المزيد مع كل ما هو جديد ومفيد تقبلوا تحياتي1 point
-
بالكلمات لا يمكنني أن أعبر عن مدى سعادتي واحترامي للزملاء الكرام وعلى هذه التهنئة جزاكم الله عني خيرا ويعجز لساني عن تقديم الشكر بالقدر اللائق بحضراتكم فشكرا لك استاذنا الفاضل : أبوخليل شكرا ً لك استاذنا الفاضل: اسير الشروق وشكراً لك استاذنا الفاضل : أبو الآء لكم جزيل الشكر وهذه الترقية لن اتمكن من الحصول عليها لولا مساعدة الزملاء الكرام اعضاء المنتدى وتقديم العون لي في كل سؤال اطرحه فشكرا للجميع1 point
-
بارك الله فيك الف شكر اخى الفاضل1 point
-
حتي تعم الفائدة اضم صوتي للاستاذ سيف الدين يا ريت الشرح وتقبلوا جميعا تحياتي1 point
-
من تخصيص الشريط اختار الكل من الكمبوبوكس ثم انزل الى الاسفل الين حرف النون هتلاقى نموذج اعمله اضافه ثم اوك1 point
-
الأخوه الأعضاء الكرام هل يمكن ربط حقول من اكسس في تقرير يحتوي على جدول أكسل بحيث ترتبط خلايا أكسل موجود في تقرير بحقول من اكسس و شكرًا1 point
-
اخى الجموعى 1- بخصوص ايقونه الفورم هى من خيارات اكسيل يعنى فورم جاهز للاستخدام ازاى تظهره اضغط على ايقونه اكسيل اختار Excel Options ثم اختار Customize لو الاوفيس بتاعك انجلش هتلاقى كمبوبوكس على اليسار اختار منه All Commands أنزل بالاسكرول بار لتحت الين توصل حرف F هتلاقى Form قم بالوقوف على كلمة Form ثم ADD ( هتلاقية بالمنتصف ) هتلاقى الفورم انتقل الى المربع ناحية اليمين ثم اضغط اوك هتلاقى الايقونه موجوده 2- الفورم اكثر شئ يتسع الى 32 عمود لازم تحدد الجدول اللى انتى عايز تشتغل عليه وتضغط على الايقونه بس طبعا لازم بداية الجدول تكون هى رؤوس الاعمده تقبل تحياتى1 point
-
الاخ الكريم - الصقر شكرا على جهد المبذول حتى لا يتم التشتيت على الاخوة اللى عايز يتعلم ويستفيد - كما ذكرت فأنا معك وكل متابعى الموضوع خطوة خطوة حتى نتعلم الترحيل تقبل تحياتى1 point
-
جزاك الله خير وجعله في موازين حسناتك ,,, جاري التحميل ............................1 point
-
بفرض أن الأساسي في A1 استخدام هذه المعادلة =IF(A1<500,50,ROUND(A1*10%,2))1 point
-
أستاذي الكريم والله شرف لي إضافة هذا العمل المتواضع لمكتبتك سعدت بردك الرائع جدا بارك الله فيك بالنسبة لمرتبه أستاذ بلاها فأنا مزلت طالب في مقامكم ودي تقديري1 point
-
بعد أذن استاذى الحبيب / رجب جاويش لأثراء الموضوع طريقه اخرى من خلال خصائص الفورم جعل showmodal = False انظر الصورة المر فقه تقبل تحياتى1 point
-
1 point
-
السلام عليكم ورحمة الله أخي الكريم سلامي، تم عمل المطلوب وزيادة (جعلتها 10 بطاقات في صفحة واحدة)... تم تبديل الخطوة في زر التحكم إلى 10 بدلا من 2 (حسب عدد الباطاقات)... والتي لم أستطع التحكم فيها هي التسمية الخاصة بجلب صورة كل بطاقة في الصفحة (لم أستطع جعل التسمية ديناميكية أي تسمية واحدة تتغير حسب رقم البطاقة في الصفحة -الرقم في جانب كل بطاقة-) لذا فكل صورة جعلت لها معادلة بالتسمية حسب رقمها (بإذن الله سأفكر في تبسيط هذه العملية بتسمية واحدة).... أرجو أن تفي هذه التعديلات بالغرض المطلوب... أخوك بن علية الملف المرفق : بطاقات للارسال 10.rar1 point
-
سننقل هذا الموضوع الى قسم اعلانات الاعضاء ومن لديه الاستعداد والقدرة التواصل مع السائل على الخاص علما ان المنتدى لا يتحمل اي مسؤلية1 point
-
اخواني في المنتدي وردت مشاركة تحتوي على ملف اكسل باسم "كشوفات" تمكنت من معالجة الموضوع لكن للاسف لم اعد اتذكر صاحبه لارسل الحل ارجو من صاحب هذا الموضوع ان يدرجه مرة أخرى او يذكر عنوان المشاركة كي ارسل الحل على كل حال الحل مرفق لمن يرغب كشوفات salim.rar1 point
-
السلام عليكم ورحمة الله أخي الكريم إيهاب، تم تعديل الرابط في الرد السابق... وآسف لهذا الخلل والملف المرسل خطأ... أخوك بن علية1 point
-
1 point
-
1 point
-
السلام عليكم ورحمة الله أخي الكريم إيهاب، تم تعديل المعادلة... أخوك بن علية المرفق : Book1_4.rar1 point
-
1 point
-
الحلقة العاشرة ************ السلام عليكم ورحمة الله وبركاته أقدم لكم اليوم حلقة كاملة الدالة MsgBox (وقد قدم لها الأخ الحبيب حسام عيسى موضوعاً كاملاً ، مما أخرني في تقديم الحلقة) .. عموماً هنتكلم عنها مرة تانية ، وفي الإعادة إفادة.. كلمة MsgBox اختصار للكلمة الإنجليزية Message Box أي صندوق الرسالة .. ودي وظيفتها إنك بتعرض رسالة للمستخدم تفيده بأمر معين .. لما نكتب الدالة MsgBox ، ونضغط مسطرة عشان ناخد مسافة ، بيظهر لنا مستطيل أصفر فيه توضيح لبارامترات الدالة .. كلها اختياري ما عدا البارامتر الأول اللي هو اسمه Prompt ، والبارامتر ده هو عبارة عن النص اللي هيظهر للمستخدم (وطبعاً مينفعش يكون اختياري وإلا مش هيكون فيه رسالة للمستخدم) بس إحنا ممكن نضحك على المحرر ، ونكتب السطر بالشكل ده : MsgBox "" هو كل اللي يهمه أقواس التنصيص .. هودا كل اللي يفهمه ، أما النص اللي بين أقواس التنصيص فدا ميعرفوش وميهموش ، اكتب أي كلام .. MsgBox "واخد على خاطري منكم" دي الرسالة اللي عايز أوصلها لكم أحبابي .. ودا سببه عدم المتابعة الجيدة للحلقات .. عموماً دا مش وقت للعتاب.. طيب واحد هيسأل : طيب كدا موضوع الدالة بسيط ومش محتاج حلقة ؟ أقوله البسيط هنعقده ، والمعقد هنبسطه .. تعالوا معايا نضع قيمة في الخلية D3 (كل اللي بيشرحوا مش عارف ليه مركزين على الخلية A1) أنا بحب التغيير - من باب خالف تعرف - ، وليكن القيمة 1500 عايزين نظهر القيمة الخاصة بالخلية في رسالة : MsgBox Range("D3").Value الرسالة هتظهر وفيها القيمة 1500 ، طيب ممكن نضيف عليها نص .. أكيد ممكن ! ليه لا! MsgBox "القيمة الموجودة يا أستاذ حسام في الخلية هي " & Range("D3").Value نلاحظ هنا إننا استخدمنا المعامل Concatenate اللي هو شكله & ، ودا وظيفته إنه بيدمج النصوص .. طبعاً القيمة اللي موجودة في الخلية D3 حتى لو كانت قيمة رقمية ، هنا مع دالة الرسالة مش بتشوفها رقم ، لكن بتشوفها نص (هنبص بعيون الدالة الجميلة) طيب ممكن نظهر قيمة خلية تانية .. أكيد ممكن ! ليه لا نضع القيمة 2000 في الخلية E4 ونجرب : MsgBox Range("D3").Value & Range("E4").Value هنلاقي إن قيمة الخلية D3 والخلية E4 لازقين في بعض ، دا لأنك مسبتش مسافة بينهم .. طيب المسافة هنعملها إزاي ؟ هو سؤال بسيط بس اعذروني أكيد فيه ناس بتسأله :: هنترك مسافة وبس .. لا .. هنعمل مسافة بالمسطرة بس بشرط تكون المسافة بين أقواس تنصيص زي كدا : MsgBox Range("D3").Value & " " & Range("E4").Value هنا نفس الكلام ربطنا بالمعامل & ، وعشان تكون المسافة مناسبة ضربت على المسطرة 3 مرات (معلش أصلي مضايق ومحتاج أضرب حد ، فملقتش غير المسطرة .. بس كفاية عليها 3 ضربات ..) واحد هيقولي أنا جربت الكود بس أنا مش عاجبني شكلهم جنب بعض ، ممكن نخلي كل قيمة في سطر .. أكيد ممكن ! ليه لا! MsgBox Range("D3").Value & vbNewLine & Range("E4").Value كلمة vbNewLine عشان نقدر ننزل لسطر جديد (وقلت قبل كدا بس محدش بيتابع إن فيه كلمة تانية بتؤدي نفس الغرض اسمها ايه يا شاكر؟ مش بقولكم محدش مذاكر .! اسمها vbCrLf ) يلا زيادة الخير خيرين .. وأضاف الأخ مختار كلمة جديدة أيضاً تؤدي نفس الغرض ألا وهي Chr(10) ربنا يسترها علينا وعليكم دنيا وآخرة. نشوف السطر ده : MsgBox ("الحمد لله الذي بنعمته تتم الصالحات") ايه الجديد يا أستاذ عبد المجيد ؟ الأقواس .. ممكن نستغني عنها ؟ آه ممكن .. ليه لا! .. بس الأقواس دي هنستفيد منها في إنك تخلي جملة MsgBox يمكن وضعها كقيمة في متغير (نصبر شوية هييجي الكلام عليها) .. طيب ايه هي الإضافات اللي نقدر نضيفها (هي زي البهارات حاجة كدا تحلي الأكله .. تخليها أحلى) ... إحنا قلنا البارامتر الأول خاص بالنص ودا إجباري (بس ممكن نخدع المحرر) ، البارامتر الثاني خاص بالأزرار Buttons .. الأزرار دي زي OK و Cancel و Retry وهكذا.. نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbOKCancel نلاحظ بعد نص الرسالة Prompt عملنا فاصلة , ودي عشان نقول للمحرر إننا هنضيف أزرار Buttons .. أول ما تعمل الفاصلة هتلاقي زي ما اتعودت قايمة فيها القيم اللي ممكن تستخدمها .. طيب لو نفذنا السطر اللي فات هنلاقي إن زر OK أو زر Cancel لو ضغطت عليهم مش هيحصل حاجة غير إنه يقفل الرسالة .. (قلنا نصبر هييجي عليها الكلام يا مستر عبد السلام) نتعرف على الأزرار الموجودة والمتاحة عندنا : vbAbortRetryIgnore vbOKCancel vbOKOnly vbRetryCancel vbYesNo vbYesNoCancel ممكن نجرب القيم دي ... القصة كلها في البادئة vb ثم الأزرار اللي هنستخدمها.. ننتقل لجزئية أخرى : مع نفس البارامتر الخاص بالأزرار ممكن نضيف رموز (علامة تعجب - علامة استفهام - ..) والرموز عشان نضيفها نضع علامة + بعد الأزرار التي سيتم استخدامها .. بالمثال يتضح المقال : MsgBox "هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion ممكن نتعرف على الرموز : vbQuestion vbInformation vbCritical vbExclamation طيب ممكن نستغنى عن الأزرار ونستعمل الرموز فقط ؟ أو ممكن نستغنى عن الرموز ونستعمل الأزرار فقط؟ أكيد ممكن ! ليه لا! (النهاردة واخدين حريتكم ..مفيش تقيد) هسيبكم شوية تجربوا الرموز دي ، وتشوفوا كل رمز شكله ايه؟ - فاصل ونواصل - واحد بعد ما شاف الرسالة ، لاحظ إن فيها عنوان Microsoft Excel فسألني ممكن أغير العنوان ده ؟ رديت عليه وقلت له (طبعاً عارفين الإجابة) عنوان الرسالة هو دا البارامتر التالت .. ود اسمه Title (ونلاحظ إن البارامتر لما يكون اختياري بيوضع بين أقواس بهذا الشكل [ ] ) نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", , "منتدى الأحبة" ايه دا بقا إنت عامل فاصلتين ليه؟ يا سيدي ما أنا قلت لك إن البارامتر التاني الخاص بالأزرار والرموز دي اختياري ، بمعنى يمكن الاستغناء عنه ، بس عشان نعديه لازم فاصلة ، وبعد الفاصلة فاصلة تانية ، يقوم المحرر يفهم إنك استغنيت عن البارامتر التاني ، ويشتغل على البارامتر التالت .. اللي هو عنوان الرسالة.. نجرب ونشوف ! ننتقل لأهم نقطة في حلقة اليوم ألا وهي تعيين الرسالة كمتغير ، عشان ببساطة ننفذ كود معين لو المستخدم اختار زر وننفذ كود تاني لو اختار زر تاني (أكيد الكلام يتوه ..خلينا في التطبيق) Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") نخلي بالنا إننا هنا هنستخدم متغير باسم Answer (ممكن تسميه بالاسم اللي يعجبك) ، والمتغير ده هيكون له قيمة (الرسالة مجرد ستارة .. والقيمة مخفية .. والقيمة دي هنعرفها حالاً) لو حبينا ننفذ كود معين في حالة اختيار معين ، هنستخدم الجملة If الشرطية ، يعني ببساطة لو المتغير Answer قيمتة كذا اعمل كذا ، ولو قيمته كذا اعمل كذا .. Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = vbYes Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = vbNo Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub أظن المثال واضح ، في حالة إذا كانت قيمة Answer تساوي vbYes ، هينفذ السطر التالي ويظهر رسالة بمحتوى معين ، ولو كانت القيمة vbNo هيظهر رسالة تانية .. واحد هيقولي هو كله رسايل رسايل مفيش شات .. طبعا الأسطر اللي هيتم تنفيذها مش شرط تكون رسالة ، دا مجرد مثال عشان تفهم كيفية استخدام المتغير .. لكن ممكن تنفذ مجموعة أسطر من الأكواد في حالة vbYes ، ومجموعة أسطر أخرى من الأكواد في حالة vbNo ... ركز وخلي بالك من الكود التالي : Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = 6 Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = 7 Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub كلنا اللي عملناه شيلنا vbYes وحطينا رقم 6 ، وشيلنا vbNo وحطينا رقم 7 (ايه دا بقا ..طيب هنعرف منين اللي إنت بتقوله ده ..فيه جدول بقيمة كل زر من الأزرار .. يرجى عدم الحفظ) فيه حاجة مهمة نسيت أقول عليها : لو لاحظتو إن الرسائل كلها وعنوان الرسائل بتظهر ناحية اليسار ، عشان نخليها يمين (ربنا يجعلنا من أهل اليمين) نجرب الكود التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbMsgBoxRight, "منتدى الأحبة" آخر جزئية هنتكلم فيها .. مش هنتكلم فيها (فيه ملف مرفق فيه توضيح لآخر جزئية .. أنا بس هشرح نقطة واحدة في الملف المرفق ، وإنتو إن شاء الله المولى هتفهموا الباقي) الأزرار والرموز اللي عدت علينا في الحلقة ، ممكن نستغنى عنها بقيم ..إزاي ؟ MsgBox "هل تحب حلقات افتح الباب؟", vbYesNoCancel ممكن السطر ده يكون بالشكل ده : MsgBox "هل تحب حلقات افتح الباب؟", 3 يعني القيمة 3 = vbYesNoCancel .. مثال تطبيقي : ------------ Sub Query() Dim Answer As String Answer = MsgBox("هل تريد الدخول لتطبيق الإكسيل لتطبيق الأكواد في حلقات افتح الباب؟", vbYesNoCancel) If Answer = vbYes Then MsgBox "تفضل بالدخول .. بيتك ومطرحك ، وإن شاء الله تستفيد" ThisWorkbook.Activate ElseIf Answer = vbNo Then MsgBox "أكيد مشغول عشان ناوي تقفل .. عموماً تصحبك السلامة وفي رعاية الله" ActiveWorkbook.Save Application.Quit End If End Sub وأخيراً أتمنى أن أكون قد وفقت في توصيل المعلومة لكم بشكل مبسط .. دمتم في رعاية الله .. MsgBox Values.rar1 point
-
الحلقة التاسعة ************ السلام عليكم ورحمة الله وبركاته النهاردة هنضرب 3 أشباح بحجر واحد (نشتغل قناصة) ، يعني الحلقة دي هنتكلم عن 3 أمور .. هنراجع على كيفية بناء دالة (هنأكد عليها بمثالين) ، ومن خلال المثالين (الشبحين) هنتعلم إزاي نتعامل مع الشروط .. يبقا مراجعة + معلومتين ! حلقة النهاردة مفيهاش كلام كتير ، بس موعدكمش إنتو عارفين طبعي بحب الرغي! معظمها هتكون عملي .. لنبدأ الحلقة على بركة الله الشكل العام لـ IF الشرطية .. عندنا 4 أشكال : الشكل الأول والثاني : لو هنتعامل مع شرط واحد وكل اللي يهمنا إن الشرط يتحقق ، مثال : If 100 > 90 Then MsgBox "The number 100 is greater than 90" الجملة لازم تبدأ بـ IF وبعديها جملة الشرط ، جملة الشرط هنا 100 أكبر من 90 (واحد هيقولي مش دي علامة أصغر من ..هقوله متنساش إننا بنكتب من الشمال لليمين ، والعلامة ممكن تقراها حسب الاتجاه ، بالعامية كدا إحنا قرينا رقم 100 مثلا هنلاقي الفتحة نحية الرقم 100 يبقا كدا نقراها أكبر من ) عارف إنها معلومة بسيطة بس فيه ناس ممكن يحصل عندها Confusion. الشرط اللي بنكتبه بيكون نتيجته حاجة من اتنين يا أبيض يا إسود (يا إما True يا إما False) ، لو كانت نتيجة الشرط True صحيحة بالمعنى البلدي يبقا اللي جاي هيتم تنفيذه ، أما لو كانت False المحرر مش هيعبر الجملة اللي ورا كلمة Then وهيعديها ، ويقول للسطر اللي بعد Then (عدي يا كود مفيش منك مصلحة) نجرب نغير علامة أكبر من إلى أصغر من ، ونشوف النتيجة ، مفيش تنفيذ لسطر الكود لأن الشرط لم يتحقق !! لاحظنا إننا كتبنا كله في سطر واحد .. ممكن اللي فات يتكتب في 3 أسطر في الحالة دي هيكون بالشكل ده : If 100 > 90 Then MsgBox "The number 100 is greater than 90" End If هنا الشرط في سطر متبوع بكلمة Then ، والسطر المراد تنفيذه في حالة تحقق الشرط (بقول تاني في حالة تحقق الشرط) دا السطر التاني ، طيب والسطر التالت ده جه منين (دا القفلة زي ما اتعودنا قفلة جملة If بتكون جملة End If ، ولاحظوا إننا في الشكل الأول مستعملناش القفلة لأننا كتبناها في سطر واحد فقط .. الشكل التالت : لما نتعامل مع شرط واحد بردو ، بس في الحالة دي إحنا عايزين نحدد ايه المطلوب من المحرر لما الشرط يتحقق ، وايه المطلوب لما الشرط ميتحققش .. بالمثال يتضح الكلام المكلكع ده : نفس المثال اللي فات بس هنزود عليه شرط إذا لم يتحقق الشرط ، بيتم استخدام جملة Else بهذا الشكل : If 100 > 90 Then MsgBox "The number 100 is greater than 90" Else MsgBox "The number 100 is less than 90" End If محدش سألني لحد دلوقتي إزاي بيتم تنسيق الكود بهذا الشكل؟ التنسيق للكود بيخلي الكود أسهل إنك تقراه وتفهم معناه .. يعني لو كتبت الكود بالشكل اللي جاي كدا هيكون أصعب شوية في التعامل معاه لما تيجي تقراه : If 100 > 90 Then MsgBox "The number 100 is greater than 90" Else MsgBox "The number 100 is less than 90" End If طبعا الفرق واضح .. والفرق يوضح أكتر لما تتعامل مع أسطر كثيرة من الأكواد .. اتعملت إزاي ؟ عن طريق الضغط على المفتاح tab بعد ما أضع المؤشر في أول السطر المهم مش هنتكلم عن البداية ولا النهاية لجملة If ، إحنا بس هنركز على جملة Else ، هي دي اللي بتفصل بين السطر المراد تنفيذه إذا تحقق الشرط ، والسطر المراد تنفيذه إذا لم يتحقق الشرط .. السطر اللي قبل Esle دا ليه الأولوية طبعاً بس في حالة تحقق الشرط ، أما السطر اللي بعديها بيكون في حالة عدم تحقق الشرط ..أظن كدا واضحة (عمال أقول الكلام بأكتر من أسلوب وأكتر من مرة ، لأن في الإعاة إفادة) نجرب الكود مرة بالشكل اللي فات ، ونغير علامة أكبر من إلى علامة أصغر من ونجرب مرة تانية ونلاحظ الرسالة (أقصد مدى تحقق الشرط) الشكل الرابع والأخير لـ IF دا بقا اللي تقدر من خلاله تضع شروط كتيرة زي ما إنت عايز (خد راحتك ..حط شروطك يا كبير ، والمحرر ينفذ) هنا المثال هو أفضل شرح ، هنكتب دالة Function وهنستخدم فيها IF مع الشكل الرابع ؛ لأننا عندنا شروط كتير .. الجماعة اللي بيشتغلوا في المدارس (ربنا يبارك فيهم) ، بيعملوا معادلة لتحديد المستوى أو التقدير (وشروطهم بتكون بالشكل ده : لو الطالب غ يبقا الناتج غ (حد عنده اعتراض) .. لو درجة الطالب ما بين 0 و 49 يبقا تقديره دون المستوى .. ولو الطالب درجته ما بين 50 و 64 يبقا مقبول .. ولو الطالب درجته ما بين 65 و 74 يبقا تقديره جيد .. ولو الطالب درجته ما بين 75 و 84 يبقا تقديره جيد جداً .. ولو الطالب درجته ما بين 85 و 100 يبقا ممتاز (شفتوا الشروط ..حاجة كدا تحس إنها متشابكة) .. بالمعادلات ممكن نعملها بالشكل ده : =IF(A1="","",IF(A1="غ","غ",IF(AND(A1>=0,A1<50),"دون المستوى",IF(AND(A1>=50,A1<65),"مقبول",IF(AND(A1>=65,A1<75),"جيد",IF(AND(A1>=75,A1<85),"جيد جداً",IF(AND(A1>=85,A1<=100),"ممتاز",""))))))) هي دي المعادلة اللي هتأدي الغرض وتحقق المطلوب .. بس تعرفوا إن طول المعادلة بالشكل ده 188 حرف (الحرف مقصود بيه الحروف والرموز) .. طبعاً المعادلة ممكن نحولها لدالة تحقق لنا المطلوب ، خلينا نشوف ونجرب : Function Grade(Mark As Variant) As String If IsEmpty(Mark) Then Grade = "" ElseIf Mark = "غ" Then Grade = "غ" ElseIf Mark >= 0 And Mark < 50 Then Grade = "دون المستوى" ElseIf Mark >= 50 And Mark < 65 Then Grade = "مقبول" ElseIf Mark >= 65 And Mark < 75 Then Grade = "جيد" ElseIf Mark >= 75 And Mark < 85 Then Grade = "جيد جداً" ElseIf Mark >= 85 And Mark <= 100 Then Grade = "ممتاز" End If End Function اتعرفنا قبل كدا على كيفية بناء الدالة ، ودا مثال تاني لتأكيد التعامل مع بناء الدوال : بدأنا بكلمة Function لأننا بنتعامل مع دالة وليس إجراء فرعي ، متبوعة باسم الدالة (والتسمية قلنا إنت حر فيها مثلا هنسميها Grade) ، طيب إحنا لما نتعامل مع الدالة دي ، نشوف الدالة دي هتتعامل مع ايه ؟؟ الدالة هتتعامل مع درجة الطالب ، فنسمي المتغير الخاص بالدالة Mark ،والدرجة دي قد تكون أرقام من 0 إلى 100 وقد تكون حروف (غ) بالتالي نخلي نوعها Variant لأن النوع ده من المتغيرات Variables بيتعامل مع أي حاجة ، فهنا هيتعامل مع أرقام ونصوص ، طيب والناتج المفروض هيكون عبارة عن نص ، فدا نخليه String وممكن نخليه Variant بس إحنا عايزين الناتج نص وبس (دون المستوى - مقبول - جيد - جيد جداً - ممتاز - غ - فراغ "") أعتقد إن الصورة واضحة ، هنا استخدمنا جملة ElseIf مش Else لأننا بنتعامل مع شروط متعددة ، ممكن نفضل نستخدمها لحد آخر شرط ، وممكن قبل الشرط الأخير نستبدلها بـ Else (إنت وراحتك) بعد كل كلمة ElseIf وضعنا شرط وفي آخر الشرط مننساش كلمة Then لما يكون فيه أكتر من شرط في نفس الوقت (بمعنى شرطين واجب تحققهم في نفس ذات الوقت بنستخدم المعامل Operator اللي اسمه And) بمعنى آخر للي ميعرفش المعامل And (لما نستخدم المعامل ده يبقا الشرطين لازم نتيجتهم تكون True عشان ينفذ السطر اللي وراه) ---------------- ناخد مثال فرعي عشان نفهم And : X = 10: Y = 20 If X = 10 And Y = 20 Then MsgBox "X = 10" & vbCrLf & "Y =20" في السطر ده لو اتحقق الشرطين وكانت نتيجتهم صحيحة هيظهر الرسالة اللي مذكورة دي ، أما لو شرط واحد فيهم متحققش ، يبقا مش هيتنفذ الكود .. معلومة إضافية لعمل سطر جديد في الرسالة نستخدم كلمة vbCrLf أو فيه كلمة أسهل منها بتؤدي نفس الوظيفة اسمها vbNewLine .. ونلاحظ بردو في الرسالة إننا استخدمنا المعامل & ودا بيستتخدم لربط أو دمج النصوص .. (أعتذر عن الخروج عن الموضوع الأصلي) ---------------- يرجع مرجعونا للدالة الخاصة بالتقدير : وضعنا الشروط ، وكلما تحقق شرط معين يتم وضع قيمة نصية لاسم الدالة : فلو تحقق الشرط مثلاً إن الدرجة ما بين 50 و 64 ، بنقول ساعتها إن الدالة اللي سميناها Grade ساعتها تحمل القيمة النصية "مقبول" ، ووضعنا النصوص بين أقواس تنصيص كما تعودنا .. يبقا في الحالة دي لو درجة الطالب 55 يبقا التقدير "مقبول" (اللهم اجعلنا من المقبولين) .. لتطبيق الدالة : اكتب القيم التالية في النطاق A1:A13 0 49 50 55 65 66 74 75 84 85 90 100 غ في الخلية B1 اكتب المعادلة : =Grade(A1) ونسحب المعادلة لحد بعد آخر النطاق ، يعني خلي المعادلة لحد A15 مثلاً عشان نشوف لما تكون الخلية فارغة ايه اللي هيحصل .. شوفوا بقا الفرق ما بين المعادلة اللي حطينها في الأول اللي طولها 188 حرف والمعادلة دي ، دي طولها يدوب 9 حروف بس (ادعوا لي !) ** ملحوظة : يا ريت لما نيجي نحط شروط ، نخلي شرط فراغ الخلية يكون في الأول (لأني جربت في دالة أخلي شرط الفراغ في الآخر بيعمل شوية كعبلة ، ودا سببه إننا لو حطينا الشرط مثلا الدرجة ما بين 0 و 49 .. الأول هيتم التعامل مع الخلايا الفارغة إنها صفر وليست خلايا فارغة) المهم عشان ميحصلش توهااااااان خليكوا تكتبوا شرط الفراغ في أول الشروط (اللي عايز يجرب يحط الشرط ده في الآخر يجرب ويشوف الكعبلة بنفسه) Function Grade(Mark As Variant) As String If Mark = "غ" Then Grade = "غ" ElseIf Mark >= 0 And Mark < 50 Then Grade = "دون المستوى" ElseIf Mark >= 50 And Mark < 65 Then Grade = "مقبول" ElseIf Mark >= 65 And Mark < 75 Then Grade = "جيد" ElseIf Mark >= 75 And Mark < 85 Then Grade = "جيد جداً" ElseIf Mark >= 85 And Mark <= 100 Then Grade = "ممتاز" ElseIf IsEmpty(Mark) Then Grade = "" End If End Function هوفر عليك وقت في التعديل ، جرب الدالة بهذا الشكل بنفسك ، وروح لورقة العمل واعمل دبل كليك في الخلية B1 عشان تشوف القيم الجديدة أو اضغط F9 لتحديث الدالة .. المشكلة بتحصل لأن منطق الترتيب في الشروط موجود ، بمعنى آخر إنه ماشي شرط شرط ، وأول ما شرط يتحقق ينتهي تنفيذه للدالة ، فلو وضعنا شرط الدرجة ما بين صفر و49 .. أول ما يلاقي خليه فاضية هيعاملها على إنها صفر وليست فارغة لأننا وضعنا شرط الفراغ في نهاية الدالة ، فنلاقي ناتج المعادلة مع الخلايا الفارغة (دون المستوى) .. انتهت الملحوظة (أنا عارف إن فيه ناس هتدعي عليا بسبب الملحوظة اللي متعتبرش ملحوظة دي .. دي درس جوا درس)@ آخر نقطة نتكلم فيها جملة IsEmpty (ودي دالة مدمجة في محرر الأكواد لاختبار الفراغ :: هل الخلية دي فارغة أم لا ؟؟) ، وممكن نستغنى عنها ونقول : If Mark = "" Then Grade = "" نرجع للصح ونخلي شرط الفراغ في أول الدالة ..أظن بإذن الله كدا الأمور بقت واضحة تماماً... ننتقل لمثال آخر وأخير عشان أنا تعبت لكم صراحة : نفس المثال ولكن بصورة أخرى .. هنعمل دالة ، هنغير اسمها بس عشان نطبقها في نفس الملف اللي إحنا شغالين عليه .. هنسميها Level وهنا في المثال القادم بإذن الله هنستخدم حاجة شبيهة بجملة If بس بصراحة ألذ وشكلها أشيك وأسهل في الفهم .. الجملة اسمها Select Case وبييجي وراها المتغير اللي هنشتغل عليه (اللي هو في الحالة دي Mark درجة الطالب) وبعدين نبدأ نضع حالات الشرط بكلمة Case متبوعة بالشرط بس بشكل مختلف شوية وقبل آخر شرط ممكن نستخدم Case Else وممكن نستغنى عنها (مش هتفرق) ، وفي النهاية مننساش القفلة يا عبد المولى (End Select) .. Function Level(Mark As Variant) As String Select Case Mark Case "" Level = "" Case 0 To 49 Level = "دون المستوى" Case 50 To 64 Level = "مقبول" Case 65 To 74 Level = "جيد" Case 75 To 84 Level = "جيد جداً" Case 85 To 100 Level = "ممتاز" Case "غ" Level = "غ" End Select End Function لتطبيق الدالة نروح للخلية C1 في ورقة العمل ونضع المعادلة بهذا الشكل ، ونسحبها لحد A15 مثلا ، عشان نقارن النتائج : =Level(A1) مش هشرح تفاصيلها ؛ لأنها واضحة وضوح الشمس في عز الليل ..(شكلي هنجت ...!!) .. (حد يضغط F5 عشان يعملي ريفرش .. الطالب المنتبه هيقولي كدا غلط لو ضغطنا هنا F5 ، وإحنا جوا محرر الأكواد كدا هينفذ أمر مش هيعمل ريفرش) بكدا نكون انتهينا من شبحين من أهم أشباح عالم الأكواد (شبح If وشبح Select Case) ، وكمان شبح (بناء الدالة UDF) أستودعكم الله ، أترككم في رعاية الله .. كان معكم القناص أبو البراء (صائد الأشباح) من قلعة الرعب أوفيسنا1 point
-
الحلقة السابعة *********** السلام عليكم ورحمة الله وبركاته عنوان حلقة اليوم (هيا بنا نلعب ونبني !) النهاردة هنشتغل في البناء .. والبناء هنا هيكون بناء دالة Function .. ممكن يكون الدرس اللي زي كدا مرحلة متقدمة بس أنا تعمدت أشتغل فيها عشان نسبق ونتسابق للمراحل المتقدمة وإحنا في البدايات ، وعشان الناس اللي مستواها متقدم تشارك معانا ، ومتحسش بالملل من البدايات اللي هما شايفينها سخيفة. ** كلنا عارفين إن برنامج الإكسيل بيوفر لنا عدد كبير جدا من الدوال الجاهزة اللي نقدر نستفيد بيها بشكل كبير ، وكمان فيه إضافات Addins بتكون فيها دوال يمكن استخدامها .. لكن مع الوقت هتلاقي نفسك محتاج تعمل دالة (تبني دالة ) بحيث توفر لك الوقت والجهد .. النوع ده من الدوال اللي بتبنيه بنفسك بيطلق عليه (الدوال المعرفة UDF ودي اختصار لـ User Defined Function ) ، وممكن نقول عليها (دوال مخصوصة .. يعني بالبلدي كدا دوال تفصيل .. بنفصلها بحيث تناسب احتياجتنا) هناخد مثال بسيط عشان نفهم إزاي نتعامل مع بناء الدوال : أول شيء لازم يكون عندك المعطيات اللي هتشتغل بيها .. لو قلنا مثلا عايزين نعمل دالة نحسب بيها مساحة المستطيل ..يبقا الأول نعرف معادلة مساحة المستطيل Area = (الطول * العرض) (محدش يكون نظره ضعيف ويقرا العرض من غير نقطة ، لأحسن تودونا في داهية) يبقا المعطيات عندي : الطول والعرض ، هنقول الطول Length والعرض Width .. دي طبعا هتكون متغيرات لأننا مش عارفين قيمتهم كام ، ولأن قيمتهم مش ثابتة ؛ فنطلق عليهم (المتغيرات) ممكن نعملها على شكل معادلة ونقول : Area = Length * Width خطوات البناء : هنفتح محرر الأكواد وندرج موديول جديد ونستعد لعملية البناء ..ركزوا معايا يا أحباب 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، تحسبا إنك ممكن تترك الخلية اللي فيها العرض فارغة .. واحد هيقول : خلااص ، هرد أقوله : لسه ! طالما إننا خلينا العرض اختياري ، يبقا لازم نحط شرط ، ونشوف الشرط إذا تحقق يعمل ايه ، ولو الشرط متحققش يعمل ايه ..!! نرجع لمرحلة الإعدادي لما كنا بناخد قاعدة 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 لو فضلت المعادلة زي ما كانت في الأول هيكون الناتج صفر .. طيب دا هيكون واجب : عايزين نضيف شرط وهنستخدم فيه معامل الشرط OR ..بحيث لو كان العرض = 0 يضرب الطول * الطول ... سامع واحد من اللي بيقروا بيدعي عليا ، وبيقول حرام عليك طلعت عنينا عشان نعرف مساحة المستطيل ، دا أنا أرحم لي إن أحسبها بايدي وأريح بالي .. معلش استحملوني ! دا كان مجرد مثال عشان نفهم إزاي نقدر نبني دالة .. واجب تاني غير الأولاني (مش هرحمكم!) : قم ببناء دالة بسيطة ، بحيث لو قيمة معينة أكبر من أو يساوي 100 يكتب ممتاز ، لو أقل من 100 يكتب جيد وإلى لقاء مع حلقة جديدة من حلقات افتح الباب واجري ورايا كان معكم البنا أبو البراء من شركة مؤسسة أوفيسنا لأعمال البناء .. إلى أن ألقاكم بخير .. دمتم في حفظ الله1 point
-
1 point
-
السلام عليكم فيما يلي ملخصا لعدة مواضيع تعليمية في الأكسس من اعداد بعض الأعضاء المميزين سلسلة الأمثلة المشروحة في الأكسس سلسلة دروس أكسس 2007 دروس قصيرة لحركات جميلة في الأكسس شرح كيفية ادخال الكود للمبتدئين بالصور1 point
-
السلام عليكم و رحمة الله و بركاته هذا القسم مخصص لعرض البرامج و الأمثلة التي يقدمها أعضاء منتدانا الغالي من مجهوداتهم الشخصية السخية فتفصل و شارك و اعرض ماتملك من أمثلة حتى و لو كانت بسيطة عسى أن يكون فيها تشجيعا للكل , و نتمنى أن تمتلىء هذه الصفحة بالمزيد و المزيد منها برنامج ثوابي للمخازن و الحسابات برنامج محاسبة الجمعيات السكنية برنامج محاسبي مبسط برنامج تنمية مهارات تعلم الانكليزية برنامج حساب الوقت و العمل اليومي برنامج جميعة و أقساط و قروض و أسهم- كمال النحال برنامج التعاميم - AT-AZIZ برنامج خلط أوراق المتسابقين - عبد الله الثبيتي برنامج مخازن - ياسر سوري1 point
-
السيدة الفاضلة الاستاذه زهرة مثال رائع جدا ........ولكني وقعت في بعضا من اللبس ... ارجوا الافادة.. في الوحدة النمطيه modResizeForm ماذا واين اغير لأعادة تحجيم النموذج مع كامل عناصره ؟ 1- اذا علمتي اني استخدم جهاز مقاس شاشته 17 بوصة وبدقة 1024 × 768 بيسكل أي ان هذا الجهاز هو الذي اصمم عليه القاعدة وبعد الانتهاء منها لا ادري على اي شاشة تعرض او بأي دقة ؟ وهذا يجرني لسؤال اخر وهو هل اجعل للمستخدم خيارا يحدد فيه مقاس شاشته حتى يتمكن من اعادة التحجيم ؟ وفي الاخير ما اريده هو اعادة التحجيم في كل شاشة عرض صغيره او كبيره تعرض عليه القاعدة التي اصممها على جهاز مقاس شاشته 17 بوصة وبدقة 1024 × 768 بيسكل وتقبلي فائق الاحترام والتقدير1 point
-
بسم الله الرحمن الرحيم يقول تعالى : و ما أوتيتم من العلم الا قليلا فهذا شي يسير الحال من كثير مما أفتقد اليه من هذا العلم الواسع , و على قدر المستطاع أقدم لاخواني هذه الوصايا التي أسأل الله أن تفيدهم قبل الشروع ببناء برامجهم , وفقنا الله و اياكم لما فيه الخير أولا : عمل تحليل مسبق للبرنامج الكثير منا عندما يطلب منه تصميم برنامج , يبدأ مباشرة بتصميم الجداول المطلوبه جنبا الى جنب مع بناء النماذج , ثم يعود ان اضطره الأمر لاعادة بناء الجداول أو العلاقات و هكذا الى أن يتم انجاز البرنامج مما يطيل مدة انجاز البرنامج ناهيك عن دقة التصميم . و قد يغيب عن أذهاننا , و غالبا نكون على عجلة من أمرنا , أن نجاح أتمتة المشروع يعتمد اعتمادا كليا على دقة تحليل النظام و تصميمه بالشكل الصحيح تحليل النظام يعتمد اساسا على الخطوات التالية بشكل اجمالي : - تحليل نظام العمل و كيفية سيره على أرض الواقع اي آلية العمل الفعليه للنظام المراد وضع برنامج له و يكون ذلك بوصف دقيق من قبل من هو مختص بهذا المجال و يعايشه بشكل واقعي , فكم رايت من برامج محاسبية فيها ثغرات محاسبية فادحة , و بسؤالي عن مصمميها يتبين أنهم من غير ذوي الاختصاصات المحاسبيه أصلا . - وضع منهجية العمل الآلية للبرنامج الذي سيستخدم في هذا المجال - وضع المخطط التدفقي للمشروع و تصور النماذج و التقارير المطلوبه - في ضوء المخطط التدفقي يتم وضع تصور للجداول المطلوبه - وضع تفصيل الحقول المراد استخدامها في بناء الجداول ثانيا : عند تصميم الجداول ينبغي التمييز بين البيانات المدخلة و البيانات المخرجة , اذ أن البيانات المدخلة هي فقط التي تخزن في الجداول , أما البيانات المخرجة فقد تكون عبارة عن البيانات الأساسية المدخلة كما هي . أو قد يكون جرى عليها بعد العمليات الحسابية , مثلا اذا كنا نريد حساب القيمة و التي هي عبارة عن : القيمه = الكميه * سعر الوحده يمكن أن نضع حقلا للكميه المباعه و حقلا لسعر الوحده أما القيمة و التي هي عباره عن سعر الوحده * الكميه , فلا يجب أن يكون حقلا ضمن الجدول وذلك لأنه يتأثر بقيمة كل من الكمية و السعر فاذا تغير سعر الوحده فان الجدول لايستطيع حساب القيمه من تلقاء نفسه الا من خلال تشغيل كود معين , لذلك يستعاض عن هذا باستخراج القيمة من خلال استعلام يحوي حقل محسوب يساوي الكميه * السعر ثالثا : يجب فصل البيانات الخاصه بجزئيه معينه عن بعضها , مثلا اذا كان لدينا نظام مبيعات , أي لدينا مواد و زبائن , و حيث أننا نريد أن ندخل اسم العميل في الطلبيه , و نحتاج بنفس الوقت لمعرفة بيانات كامله عن هذا العميل , فاذا كنا سنقوم بادخال بيانات العميل هذه كل مره في جدول الطلبيات فسيكون هذا عملا مرهقا , لذلك يتم انشاءجدول مستقل لبيانات العملاء تجتمع فيه بياناتهم الكامله , و نكتفي في جدول الطلبيات بوضع حقل واحد لرقم العميل , و بعملية الربط بين الجدولين نستطيع معرفة مانريد من بيانات عن هذا العميل . رابعا : استتباعا للوصية السابقة , نؤلف جدول الطلبيات و يكون فيه حقل واحد لكود العميل و يكون الرقم المعرف للعميل و ليس اسمه , و لمزيد من التفاصيل يرجى مراجعة الموضوع التالي http://www.officena.net/ib/index.php?showtopic=6209 خامسا : مع عشقي و حبي الجارف للغة العربية و استخدامها في التخاطب و الكتابة و أعتبرها بحق أرقى لغات العالم , الا أنه و للأسف فان كتابة الأكواد تعتمد على اللغة الانكليزية , لذلك يكون من الأنسب و الأيسر أن يتم استخدام الأسماء الانكليزيه لكل مكونات قاعدة البيانات و خاصة اسماء الجداول و الحقول , لأن استخدام الأسماء الانكليزية أسهل أثناء العمل بالمعادلات و أكواد الفيجوال بيسيك سادسا : تجنب وضع مسافات في التسميات , مثلا اذا كنت تريد تسمية Product List فالأفضل وصلها هكذا ProductList سابعا : كثيرا مايتم بناء استعلام من جدول و يأخذ الاستعلام بشكل تلقائي نفس اسم الجدول , و حتى نميز بين الجدول و الاستعلام يفضل ابتداء اسم الجدول برمز tbl يليه اسم الجدول , مثلا الجدول Product يصبح TblProduct أما الاستعلام فيسبقه الرمز qry و يصبح QryProduct و قد نستدرك بعض الوصايا لاحقا هذا و الله أعلم1 point
-
خامسا : التقارير رسم جدول في التقرير برمجيا بالكود كما في الوورد تنسيق السجلات الى أطول سجل بنفس الحقل في حال الحقول قابلة للتمدد تنسيق الحقول الى أطول حقل موجود في التقرير مشكلة الصفحة الثانية العمود يأتي زاحفا الى اليمين كود لقياس سرعة فتح التقرير تنسيق طباعة رقم الصفحة كيفية وضع هوامش مختلفة لكل صفحة كود التحكم بعدد نسخ التقرير و عدد الصفحات المطبوعة منه كود التحكم باتجاه الطباعة و مقاس هامش الصفحة اضافة رسم خلفي للتقرير اظهار رسالة عند عدم وجود بيانات للتقرير اخفاء اشارة خطأ في مربع النص عند عدم وجود بيانات للتقرير صانع التقارير - كود يمنحك الفرصة لتصميم تقاريرك من معالج خاص أثناء الطباعة عمل ترقيم مسلسل لسجلات التقرير كيفية التحكم بعدد سجلات كل صفحة في التقرير كيفية وضع صورة كخلفية للتقرير فتح التقرير على سجل محدد توسيط محاذاة النص داخل الحقول تدوير مجموع كل صفحة الى راس الصفحة التالية معاينة التقارير عن طريق اختيارها من مربع تحرير و سرد التحكم بهوامش التقرير من الأعلى عرض بيانات التقرير في عمودين بصفحة واحدة بدلا من صفحتين اختيار سجلات محددة من النموذج و طباعتها1 point
-
الآن تأكدت من الطريقة السابقة .. وبإمكانك الاطلاع على التفاصيل أكثر هنــــــــــــــــــــا1 point
-
أستاتذتي : ممكن كود لعمل فورمات للمحركات الموجودة سواء a/c/d ثم رسالة بعد انهاء التهيئة ؟1 point