بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
نجوم المشاركات
Popular Content
Showing content with the highest reputation on 11/29/14 in all areas
-
4 points
-
بسم الله الرحمن الرحيم جميعنا شاهدنا مواضيع العﻻمه ياسر خليل حول البرمجه وتعلم االبرمجه بالتحديد في الحقيقه طريقة التعليم لديه هي البناء الحقيقي للمبرمج الناجح ... انا شخصيا اتابع جميع حلقاته حتى تلك البسيطه جدا التي نجيدها بسهوله وذلك من اجل المتعه والتشويق والفائده العلميه في الشرح اضافة الى التشويق ... هدفي من نشر هذا الموضوع هو اوﻻ لتقديم الشكر للخبير ياسر خليل ليس فقط على ما يبديه من جهد في الشرح وانما بسبب ابتكاره طريقه جديده في التعليم لذلك ندعوا ان تكون الشروحات منطلقه بذات الروحيه وتفصيليه شامله وعدم اﻻعتماد على اﻻكواد الجاهزه التي ﻻ تطور وﻻ تعلم وذلك انطﻻقا من مبدا ﻻ تعطني سمكه وانما علمني الصيد حتى اصطاد السمك طوال حياتي وشكرا ﻻدارة هذا الصرح العلمي الرائع والثمين دمتم بخير2 points
-
2 points
-
بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته بعد الاتفاق مع الاخ سيف الدين وردنا على استئذان اخونا / megonil ونقول له ان نحن اسرة واحدة مكملين لبعضنا البعض وقد بادرت بجمع الملفين مع بعض واضفت بعض الميزات الجديدة وهي : 1- شاشة دخول وخروج مع اخفاء القوائم واشرطة الادوات وامكانية الحفظ والخروج واظهار القوائم واشرطة الادوات 2 - وضعت الاستعاذة والبسملة قبل بدء البرنامج 3 - تنبيه (اثناء البحث وفي حالة انك لم تضع كلمة البحث وضغطت زر بحث) 4 - تنبيه (اثناء البحث وفي حالة عدم ظهور نتائج للبحث ) 5 - تلوين الكلمة هدف البحث باللون الأحمر اثناء رؤيتها في الملف وفي الاستخدام مايغني عن الشرح تفضلوا المرفق ولا تنسوا الدعاء لكل من ساهم في هذا الملف ودمتم في حفظ الله وسلامته تحياتي وسلامي اخوكم/ خبور _____________________.rar1 point
-
السلام عليكم إخواني الكرام اقترب العام 2015 وهذه هدية بسيطة لكم .. تقويم يمكنم الاستفادة منه .. يمكن طباعة التقويم للعام كله في ورقة واحدة 2015 Calendar.rar1 point
-
والله يا حبيب قلبي كنت بجهز لنفس فكرتك دي وكنت بدأت تقريبا 3 دروس ( لاقيتهم جنبك ولا حاجه ) وكمان انتا خليتهم مالهموش لازمه خالص بطريقتك الرائعه واسلوبك الجميل ولا حاجه جمبك يا بخت تلاميذك بيك في المدرسة تقبل خالص تحياتي1 point
-
السلام عليكم ورحمة الله وبركاتة شكر وتقدير لكل من قدم افكار جديدة ومفيدة كانت لنا نبراس يضيء الطريق واحب ان اكون احد افراد اسرة هذا السرح العظيم وان تعتبروني اخاً لكم وتلميذ يتعلم ويستفيد من عمالقة هذا السرح العظيم وتقبلوا وافر الشكر والتقدير والسلام عليكم ورحمة الله وبركاتة1 point
-
(متعرفش زرار في لوحة المفاتيح بيعمل إعجاب) اذا اكتشفت هذا الزر ابلغني به على شان القط بتاعي اكل الماوس و يا دوبك الحق اشتري غيرها هههههه1 point
-
أخى الفاضل ايهاب تأكد عندما لا تجد رد ان الموضوع غير واضح بالنسبة للاخوة الاعضاء، او الشيت غير منظم، وبالامانة عند فتح الملف الخاص بك لا اعلم لماذا تجعل كل الفروع في نفس الشيت طب ما تجعل كل فرع في شيت مستقل لو الفروع عدد قليل ... او على الاقل اجعل عمود اسمه الفرع بجانب التاريخ ومن الممكن عمل Subtotal على اساس الفرع لمعرفة الاجماليات الخاصة بكل فرع على حدة .. واجعل المسحوبات في شيت منفصل نظم الملف الخاص بك اخى حتى تسهل على نفسك العمل وعلى اخوانك المطلوب تحياتى1 point
-
بس كدا أخي سليم عيني إلك حبيبي هي بس المشكلة في الماوس مش بيعمل كليك شمال ههه ولا يمين أنا شغال بلوحة المفاتيح .. متعرفش زرار في لوحة المفاتيح بيعمل إعجاب .. كل ما توصلت إليه علامة التعجب (تمشي معاك ولا أشوف غيرها!!!!!!!) !!!!!!!!!!!!!!!!!!!!!!!!!!!!! إني أحبك في الله1 point
-
أخى الفاضل أبو صلاح اسف لم انتبه لتلك النقطة ولم انظر الى الكود المكتوب انا تخيلت انك تريد اخفاء الصفوف الفارغة وفقط، عامة مرفق الملف لربما به طلبك تحياتي اخفاء الصفوف بدل الاعمدة.rar1 point
-
1 point
-
أخى الفاضل أبو وليد السلام عليكم ورحمة الله وبركاته تأكد تماما اخى الكريم عندما لا تجد رد أن الطلب الذي تريده غير واضح وغير مفهوم ... فبرجاء التوضيح اكثر تحياتى1 point
-
اخي طبعا ده شي اكيد يحصل لانك عند غلق البرنامج من النموذج الرئيسي وضعت زر امر غلق للنموذج وليسس للبرنامج فلابد من حدوث ذالك المفترض وضع زر امر في نموذج البداية اونموذج الواجهة وفي حدث عند النقر اختار Quit انظر المرفق Untitled.rar1 point
-
الاخ / سليم حاصبيا الصراحة مجهود جبار ورائع وهذا ما كنت ابحث عنه فعلاً روعه بكل المقاييس وانصح الجميع به كتب الله لك الاجر ونفعك بعلمك لتنفع غيرك اشكرك يالحبيب1 point
-
أستاذي حسام عيسى أخجلتني بهديتك المتواضعه أستاذي على العموم إضافة رائعه جدا إستفدت منها وجزاك الله عنا كل الخير مع تحيات أخيك/الجموعي1 point
-
بعد أذن استاذى ومعلمى / عبدالله باقشير والاستاذ / ضاحى الغريب اثراء للموضوع عمل الكود من خلال تيمر () الجموعى Sub Dim pctCompl As Single On Error Resume Next يمكنك تغيير السرعه من السطر التالى ' secondes = 0.1 For i = 1 To 100 timer_a = Timer Do While Timer < timer_a + secondes DoEvents Loop pctCompl = i progress pctCompl Next End Sub يوجد ملف مرفق ايضا انا مدين لك بهدية فواجب اردها تقبل احترامى وتقديرى استاذى / الجموعى progress.zip1 point
-
اخى الفاضل السلام عليكم ورحمة الله وبركاته جرب الملف المرفق، أعتقد أنه أكثر إحترافية ويلبي طلبك، علما انه ملف اصدار 2010 تحياتي PDF PrintFORM.rar1 point
-
ببساطة دور على الشكل ده <> واضغط عليه والصق جواه الكود1 point
-
اخي الحبيب أ/ ياسر السلام عليكم ورحمة الله وبركاته وبعد اذن استاذنا الحبيب ومعلمنا واخينا الأستاذ // عبدالله باقشير يمكنك عدم غلق الفورم الا بعد انتهاء الـ Progress Bar كما بالمثال التالي Option Explicit Dim bOK As Boolean Private Sub UserForm_Activate() Dim i As Integer, j As Integer For i = 1 To 100 For j = 1 To 1000 DoEvents Next j Me.Text.Caption = i & "% Completed" Me.Bar.Width = i * 2 Next i bOK = True End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If bOK Then GoTo 1 If CloseMode = 0 Then Cancel = True 1: End Sub مع تحياتي progress.rar1 point
-
السلام عليكم الاخت الكريمة الخطا هو ان الكود ببحدث الورقه والصحيح ان يكون بالمودويل فعليك ادراج مودويل جديد و انسخى الكود من حدث الى ورقه الى المودويل ثم ارجع الى حدث الورقه واحذفى الكود ثانى ملاحظة وهى الدرس فى طريقتين انتى لا مطبقه الطريقه الاولى ولا الثانيه الاولى وهى هنا العرض من نوع دبل (اللى باللون الاحمر) وذلك يعنى وجود العرض ومعلوم قيمته مش انه موجود بس لا وقيمته كمان معروفه (Function Area(Length As Double, Width As Double Area = Length * Width End Function ام الثانى فى حاله لما نكون عايزين نعمل شروط للداله مثل فى حاله عدم وجود العرض يضرب الطول فى الطول ويكون الكود كالتالى وهنا العرض عملنا له خيار فى حاله عدم وجوده او حاله قيمتى صفر لذالك استخدمنا if (Function Area(Length As Double, Optional Width As Variant If IsMissing(Width) Then Area = Length * Length Else Area = Length * Width End If End Function1 point
-
السلام عليكم يكفي ان تضع هذا الكود في الفورم Private Sub UserForm_Activate() Dim i As Integer, j As Integer For i = 1 To 100 For j = 1 To 1000 DoEvents Next j Me.Text.Caption = i & "% Completed" Me.Bar.Width = i * 2 Next i End Sub تحياتي1 point
-
1 point
-
السلام عليكم ستم الترحيل وفقا للشرط الآتي : 1/ إذا كانت القيمة في العمود (Q) أو العمود (T) سالبة يتم ترحيل البيانات إلى ورقة (مطالبات البنك) 2/ إذا كانت القيمة في العمود (Q) أو العمود (T) موجبة يتم ترحيل البيانات إلى ورقة (أخطاء بالحساب) اصغط على زر ترحيل إما من ورقة (مطالبات البنك) أو من ورقة (أخطاء بالحساب) أرجو أن يكون هذا هو مطلوبك تفضل مطلوب ترحيل.rar1 point
-
عزيزي اعمل استعلام للجدول واضف التعبيرين التاليين Expr1: Left([name];InStr([name];"-")-1) Expr2: Right([Name];Len([Name])-InStr([Name];"-")) بالتوفيق1 point
-
آسف نسيت أمرا أضبط خاصيتى (منبثق - وشكلى ومشروط) الى نعم اسم الخاصيتان بالانكليزية (pop-up , modul) اضبتها لكل النماذج الفرعية وكذلك التقارير جرب ووافنى بالنتيجة1 point
-
الحلقة الرابعة طبعا أنا ايدي بتترعش وأنا بكتب كلمة الحلقة (الرابعة) ، دا عشان رقم 4 بقا من المحرمات في مصر .. وربنا يستر ومحدش يبلغ عننا!! فيه نقطة معينة في الشرح تعمدت إن أسيبها عشان حبيت إن حد يسألني عليها بس للأسف محدش سألني ، ودا معناه إن اللي بيتابع الحلقات مجرد متلقي يعني مش فعال .. أو فعال وخايف إنه يسأل لأحسن أضربه .. متخافوش مش بضرب ولا بحب الضرب وبحب اللي يسألني ، حتى لو كان السؤال تافه .. لإن السؤال هو طريق المعرفة .. ومن غير السؤال مش هنتعلم !! النقطة اللي بتكلم عليها حفظ الملف اللي فيه أكواد .. محدش فيكم جاتله رسالة زي دي؟ طبعا النقطة دي كان لازم نشرحها ولازم تسألوا عليها .. طبعا أول ما بتفتح الإكسيل وتشتغل عليه بيكون الملف الافتراضي xlsx .. وطول مفيش أكواد بتتم عملية الحفظ بشكل طبيعي ، أما لو كتبت إجراء فرعي أو بمجرد كتابة اسم إجراء فرعي بس حتى لو كان جواه فاضي مفيهوش أكواد ، وجيت تحفظ هتلاقي الرسالة دي ، لأن صيغة الملف اللي بيحتوي على ماكرو مختلفة عن الصيغة العادية ، بتكون الصيغة xlsm. طيب نعمل ايه ؟ أكبر غلطة إنك تضغط Yes مش أي حد يقولنا نعم نقوله ماشي غلط .. هنا لو ضغطت Yes هيحفظ الملف بدون أكواد .. لازم تتمرد وتضغط No وتحدد اسم الملف في حقل File Name أظن دي كلنا عارفينها ، وفي الحقل التالي فيه قايمة منسدلة بنختار منها تاني اختيار Excel Macro-Enabled ، وبكدا نقدر نحفظ الملف اللي فيه أكواد . طبعا هتلاقي ملف تاني موجود في المكان اللي فيه الملف الأول بس الصيغة مختلفة .. الحمد لله حفظنا الملف اللي هنشتغل عليه !! نبدأ الحلقة : هنرغي النهاردة عن المتغيرات .. لاحظت في كل الشروحات اللي شفتها إن درس المتغيرات بيكون دمه تقيل ورخم ؛ لأن كله بيكون غالبا نظري أكتر منه عملي وبيكون في درس واحد مرة واحدة . إحنا لأننا اتبعنا أسلوب مختلف تماما هنتكلم عنه واحدة واحدة متغير متغير ، وبالأمثلة والتطبيق ، ومش مهم الكم بقدر الكيف (ومحدش يفهم الكيف دي غلط) نفهم الأول يعني ايه متغير .. يعني مش ثابت (صح يا حسام .. حد عنده إجابة تانية كله ساكت يعني مفيش غير حسام اللي عارف ..)! لما نبدأ في عالم البرمجة ، مع الوقت هتلاقي نفسك محتاج الذاكرة إنها تخزن لك أرقام معينة أو نصوص ؛ عشان تستدعيها في وقت اللزوم ، وتبدأ تتعامل مع لما تستدعيها (ربنا يكفينا شر الاستدعاء) عشان نقدر نخزن الأرقام والنصوص دي لازم نستعين بالمتغير .. ييجي المتغير ويقولنا تحت أمرك يا فندم أنا في الخدمة ، وطبعا الذاكرة بردو متأخرتش عننا في تقديم المساعدة. بس المتغير له شروط عشان نقدر نستفيد منه ..أولاً عايز حاجة تسنده عشان بيتكسف يقف لوحده فبنستدعي كلمة اسمها Dim ، ومن غير الكلمة دي يبقا المتغير وحيد ومش هيرضى يساعدك (هي دي اللي بنعلن بيها عن المتغيرات) ثانياً بنديله اسم تمام .. فاكرين شروط تسميه الإجراء الفرعي تقريبا نفس شروط تسمية المتغير .. يعني مينفعش يبدأ برقم لكن ممكن الرقم ييجي بعدين في الاسم بس في أول الاسم لا .. وممنوع الحروف الخاصة زي علامة # $ % ^ & * @ عموما لو فيه حاجة غلط محرر الأكواد هيظهر لك رسالة Syntax error تعرف إن فيه حاجة غلط.. دا كان الشرط التاني للمتغير إن يكون له اسم ، تالت شرط اللي هو نوع المتغير ( ودا ضروري بس اختياري ) فزورة دي ..>> أيوا هو اختياري يعني ممكن ميتكتبش ومفيش مشكلة ، بس طبعا ذوي الخبرة يعرفوا إن كدا محرر الأكواد بيحدد نوعه بردو ، بس بيحدده نوع اسمه Variant ودا له ميزة وعيب .. ميزته إنك لو مش عارف نوع المتغير بيكون دا الافتراضي وبيعفيك من تعريف نوع المتغير .. وعيبه إنه بيستهلك مساحة كبيرة في الذاكرة .. يعني لما ربنا يكرمكم وتكتبوا أسطر كتيرة من الأكواد لو معرفناش نوع المتغير ، هيكون الكود بطيء جدا مقارنة بإننا نعرف الكود بنوع محدد ..! عشان كدا قلنا إنه ضروري يعني هو اختياري ، بس ممكن إحنا نخليه إجباري ؛ عشان نتعود على الصح من البداية (مش كدا ولا ايه!) طيب إحنا هنعرف نوعه إزاي ؟؟ إنت اللي بتحدد نوعه حسب ما تريد وهنتعرف على الأنواع بس بالراحة عليا ..أنا أحب أرغي وآخد وقتي في الرغي قبل ما أكمل بكدا نكون عرفنا شكل السطر اللي هيتم الإعلان فيه عن المتغير ، هيكون ببساطة بالشكل اللي جاي حالا هنفترض إني هخزن في الذاكرة رقم صحيح وهنسميه MyNumber Dim MyNumber As Integer أيوا نحفظ بقا الشكل دا كويس ونشوف الشروط اللي قلنا عليها انطبقت ولا لا ! أول شرط الكلمة Dim اللي هتخلي المتغير ميخافش ، وتاني شرط اسم المتغير وهو هنا MyNumber ودا أنا اللي سميته مش محرر الأكواد عشان محدش يفكر إنه لازم يكون بالاسم ده يعني الاسم إنت حر فيه إن شا الله تسميه (مكرونة) ، وبعدين هنلاقي كلمة من حرفين As ودي متكلمناش عليها دي اللي بتفصل بين الاسم والنوع .. صحيح الاسم مرتبط بالنوع بس لسه في مرحلة الخطوبة والخطوبة هتطول فنفصل بينهم بمحرم اللي هو As وأخيرا النوع Integer ودا بيستخدم للأرقام الصحيحة (أول نوع خلصنا منه الحمد لله)... يبقا خلاصة الكلام السطر ده بنقول لمحرر الأكواد إننا هنستخدم متغير باسم MyNumber وهيكون نوعه عدد صحيح (إحنا كدا بنوفر في الذاكرة مساحة وبنخلي الكود يكون أسرع لما نحدد النوع) طبعا الطالب الناصح هيقولي هو فين الرقم اللي إحنا خزناه في الذاكرة دا ملوش أثر هقوله لسه الحتة دي جاية دلوقتي .. السطر دا بس كأننا بنكلم الذاكرة ونقولها : استعدي أيتها الذاكرة آتٍ إليكي متغير بهذا الاسم ومعاه بطاقة الرقم القومي بتاعته ابدأي اتعاملي معاه .. فالذاكرة تشوف اسمه لو كان اسمه صحيح تقوله اتفضل ، وتشوف نوعه وتحجز له مكان مناسب على أده .. ما هو كل نوع على أد حجمه (زي المثل اللي بيقول كل برغوت على أد دمه) ..يعني النوع Integer غلبان وصحته على أده هتحجزله مكان صغير ، أما Variant فربنا يديله الصحة هياخد مكان لا بأس به (يا ريت تكون النقطة دي بقت واضحة) طيب بعد ما عرفنا المتغير .. نديله قيمة وعشان ندي قيمة قلنا قبل كدا لازم علامة = يساوي ، وتكون القيمة اللي عايزين نخزنها على اليمين بعد علامة يساوي مش قبليها ومينفعش نحط القيمة الأول كدا غلط .. عايزين نتعلم صح ! زي ما أخدنا في الخصائص إن كل خاصية ليها قيمة بنحددلها قيمة .. بردو المتغير بنحدد له قيمة زي كدا MyNumber = 70 يبقا إحنا كدا حددنا قيمة المتغير بـ 70 طيب واحد يقولي يعني عشان أخزن الرقم 70 في الذاكرة هكتب سطرين ، طب ما نختصرهم في سطر واحد يا معلمي (طبعا هو مش معلمي بضم الميم لا دا بقولها بكسر الميم ، على أساس إننا قاعدين على قهوة) .. وبعدين يقولي هختصره كدا Dim MyNumber As Integer = 70 هقوله جرب بنفسك هتلاقي محرر الأكواد أظهر لك رسالة خطأ .. اللي اشتغل على Visual Basic.Net الفكرة دي مقبولة لكن هنا في الـ VBA غير مقبولة.. طيب دلوقتي نطبق عملي السطرين اللي فاتوا .عايزين مثلا نحط قيمة المتغير في الخلية A1 >> Range("A1").Value = MyNumber الخلية A1 وبعدين نقطة متبوعة بخاصية أول مرة تقابلنا دلوقتي ، ودي مهمة جدا ومعناها القيمة Value .. يعني خلي قيمة الخلية A1 تساوي المتغير اللي اسمه MyNumber ، فيقوم محرر الأكواد يروح للذاكرة يسألها عندك متغير اسمه MyNumber ، ترد تقوله أيوا قاعد مرزوع هناك أهو .. يقوم المحرر يشده من قفاه (شكلها كدا أنا اللي هيتعمل فيا كدا النهاردة .. مش جايبها لبر من بدري عمال أقول 4 واستدعاء وشد من القفا ربنا يستر ..) المحرر يشوف قيمة المتغير اللي تم تخزينها ويحطها في الخلية A1 .. اعذروني إذا كنت بشرح اللي بيحصل بالتفصيل بس التفصيل دا مهم .. واحد تاني مخه شغال هيقولي طيب أنا أقدر أختصر الكود بتاعك اللي هو 3 أسطر في سطر واحد وهيطلع الناتج صح Dim MyNumber As Integer MyNumber = 70 Range("A1").Value = MyNumber هيقولي بص بقا السحر أهو الكود بتاعك في سطر واحد Range("A1").Value = 70 هقوله برافو عليك دا صحيح بس مش هو دا المهم إننا نحط القيمة 70 في الخلية A1 وخلصت الحكاية .. الفكرة إن المتغير هنستخدمه مثلا في أكتر من سطر .. وليكن هستخدمه 10 مرات .. لو أنا سمعت كلامك يا نبيه يبقا لو حبيت أغير قيمة المتغير لـ 100 مثلا هضطر أدور على القيمة 70 في كل أسطر الكود وأغيرها 10 مرات .. لكن بالطريقة اللي قلت عليها المتغير لو حبيت أغيره هغيره مرة واحدة بس في أول الكود وخلصت الحكاية!! دي نقطة نقطة تانية إن ممكن يتم على المتغير عمليات حسابية متداخلة ، فلو استعملنا القيمة من غير المتغير هيكون صعب التعامل مع الكود طيب نجرب نحذف كلمة Dim من الكود ونخلي الكود بالشكل ده MyNumber As Integer MyNumber = 70 Range("A1").Value = MyNumber شيلنا كلمة Dim الغريب إن محرر الأكواد مبيديش خطأ لما بتشيلها .. لكن ساعة التنفيذ يخضك برسالة ويقولك معنى الكلام ده إن المتغير مينفعش يتم الإعلان عنه إلا بكلمة Dim ، وإلا سيتعبر الإعلان غير قانوني وسيتم إحالة الكود للمحاكمة (مش بقولكم مش جايبها لبر) بكدا نكون اتعرفنا على أول نوع من المتغيرات اللي هو Integer !! نتعرف سريعا على نوع تاني مشهور جدا اللي هو String ودا بيكون للقيم النصية بالمثال يتضح المقال : Dim Myname As String Myname = "Yasser" MsgBox Myname طبعا بقت الأمور أوضح دلوقتي المتغير اسمه Mname ونوعه String يعني نص .. وتم وضع القيمة النصية Yasser له ، ومننساش مع النصوص أقواس التنصيص .. وآخر سطر مش محتاج إني أشرحه بس نلاحظ في آخر سطر فايدة تانية للإعلان عن المتغيرات .. هنا لما حطينا القيمة النصية Yasser وأسندناها للمتغير Myname ، لما نيجي بعد كدا نستخدمه خلاص هنرتاح من أقواس التنصيص .. وهنعتبر دي فايدة تانية يلا بقا خدوا الواجب عشان أنا تعبت ... 1 - قم بالإعلان عن متغير بأي اسم يعجبك من أي نوع يعجبك وخليه يظهر في الخلية C5 ويظهر معاه رسالة مضمونها أنه قد تم وضع القيمة للمتغير اللي إنت سميته في الخلية C5 2 - قم بالإعلان عن متغيرين من النوع Integer وقم بعمل عملية جمع وناتج الجمع في الخلية E5 إلى لقاء مع حلقة جديدة من حلقات افتح الباب وزغردي يا رباب (دا إذا عدا اليوم بسلام ومكانش فيه استدعاء) دمتم في عون الله وحفظه1 point
-
الحلقة الثالثة طبعا واحد هيقولي ارحم نفسك .. كفاية كدا النهاردة ..!! أقولك ايه النهاردة أجازة وبعدين أنا عايز أخلص الشوية اللي دايما بنطول فيهم عشان نبدأ نتعلم جديد .. مش كل اما دورة تبدأ تلاقي الموضوع يبقا زي الفل وياخد وقته في البدايات والأساسيات وفجأة الدورة تتقطع .. هنتكلم شوية في الحلقة دي عن تسجيل الماكرو .. واحد رفع ايده وبيقول أيوا أنا متمكن فيها (أقوله كتر خيرك !) بس أنا مش عايزك متمكن .. إحنا بس هنستفيد من حكاية التسجيل دي في أمور معينة .. واحد تاني هيرفع ايده ويقول طيب أنا أقدر أعمل الكود بالشكل اللي أنا عايزة من غير ما يكون عندي فكرة بالأكواد ووجع الدماغ هقوله إنت صح وغلط .. صح من جهة وغلط من جهة .. بس مش هناقش الموضوع ده المهم نبدأ نشوف ايه حكاية التسجيل دي.. قبل ما نبدأ نتعلم إزاي نخلي نافذة الإكسيل ونافذة محرر الأكواد جبنا إلى جنب خلي عينك ع الاتنين ..!! نفتح الاتنين (بلاش الجمعه عشان أجازة الموظفين) نفتح النافذتين وبعدين نفعل نافذة الإكسيل ونضغط على علامة الويندوز اللي ف لوحة المفاتيح اللي ما بين CTRL و ALT في الناحية الشمال .. لو ملقتهاش يبقا إنت مرجعتش لوحة المفاتيح اللي قلت لك رجعها أو رجعتها بس نصب عليك تاني !! بنضغط على زر الويندوز + سهم شمال مثلا .. ونروح نفعل النافذة التانية ونضغط على زر الويندوز + سهم يمين . بحيث تكون النافذتين جنب بعض عشان نتأمل في جمالهم وهما جنب بعض كدا زي عريس وعروسة .. في محرر الأكواد : هندرج موديول جديد أو مش شرط .. وفي الإكسيل هنروح للتبويب Developer طبعا خلاص عرفنا إزاي نوصله ونضغط على Record Macro قبل ما نضغط منستعجلش نبص الأول على الشكل المرفق مع الأمر هنلاقي علامة دايرة حمرا ولو ركزنا في شريط الحالة اللي في أسفل تطبيق الإكسيل هنلاقي نفس العلامة .. معنى كدا إن تسجيل الماكرو متاح في التبويب وفي شريط الحالة (أضف إلى معلوماتك) لما نضغط عليه هنلاقي نافذة طلعت لنا بنسجل فيها اسم الماكرو واتعرفنا شروط الاسم ..وممكن نعمله اختصار وأنا مش بحب الحركة دي لأن الإكسيل ملياااااااااان اختصارات فممكن يحصل تعارض ما بين اختصارات الإكسيل والاختصار اللي سيادتك هتعمله .. إحنا شوية وهنتعلم إزاي نربط الكود بزر لتشغيله من داخل الإكسيل أو ورقة العمل أفضل. وبعدين بيقولك هتخزنه فين وأنا أفضل تتركه زي ما هو This Workbook لو فتحت القايمة دي هتلاقي فيه مصنف باسم Personal.XLSB ودا بيكون مكانه في البارتشن C: وبيكون مخفي وممكن تظهره عن طريق التبويب View ثم Unhide هتلاقي اسم المصنف موجود ممكن تظهره ..أنا بقا لا أحب أظهره ولا أخفيه أنا بحذفه عشان بيضايقني بظهوره في محرر الأكواد في نافذة المشروع .. دا مجرد ارتياح شخصي وطبعا إنت ليك كامل الحرية في حذفه أو عدم حذفه عشان ممكن شركة مايكروسوفت تزعل مني عموما المصنف دا لزمته ايه .. المصنف معمول إنك تخزن فيه الأكواد الخاصة بك عشان تقدر تنفذها في أي مصنف مفتوح بدون إدراج الكود مرة أخرى (بس يا سلام بقا لو أكوادك كلها اللي بتستعملها محفوظة فيه ومعندكش منها نسخة تانية وفجأة الكهربا تقطع ودا مبيحصلش كتير في مصر والحمد لله تلاقي الويندوز سقط والحمد لله أكوادك في خبر كان ) عموما هي ميزة بس أنا شايفها مش ميزة .. بالنسبة لمسار المصنف دا بيكون في : C:\Users\Administrator\AppData\Roaming\Microsoft\Excel طبعا Administrator دا اسم المستخدم بيختلف من جهاز للتاني .. روح للمسار ده هتلاقي المصنف احذفه وريح بالك (ليك مطلق الحرية) أنا طبعا شرحته بالتفصيل أهو رغم إني مش بستخدمه بس عشان محدش يقول إني قصرت ... آخر حاجة وصف الكود واللي هتكتبه هنا هيظهر لك على شكل تعليق .. بصراحة دي بقا رغم إن فيه كتير بيطنشها بس أنا شايف إنها مهمة .مهم جدا توثق أكوادك بتعليقات عشان تقدر بعد فترة لو حبيت تعدل على الأكواد تكون الأمور واضحة بالنسبة لك .. هتقولي أنا اللي كاتب الكود وحافظ كل كبيرة وصغيرة فيه ... يتهيأ لك والله أنا ساعات أندمج في كتابة كود بشكل معين وبعد فترة أحتاج للكود تاني أقوم أروح للكود الاقي نفسي تايه رغم إني أنا اللي كاتبه ومطبقه قبل كدا .. التوثيق مهم صدقوني .. المهم بيظهر التعليق في الكود بلون أخضر .. طيب إزاي أعمل تعليق طبعا بيكون بالضغط على ' طبعا اللي نظرهم ضعيف مشافوش .. لما يكون اتجاه الكتابة إنجليزي نضغط حرف الطاء اللي بعد العلامة دي بيتم تجاهله تماما يعني متقلقش مش هيتنفذ الأمر لو كان قبله علامة ' دي .. جمد قلبك واضغط أوك هتبدأ عملية التسجيل (وطبعا مننساش المايك والكاميرا يكونوا راكبين في الجهاز وكله تمام بس المشكلة إننا مش محتاجينهم اخلعهم تاني يا مراد بلاش وجع قلب) اضغط أوك ولاحظ علامة التسجيل اللي قلنا عليها من بدري هنلاقيها اتغيرت لشكل مربع صغير لونه أزرق اللي هو دليل إن التسجيل شغال .. العلامة موجودة زي ما قلنا في التبويب وفي شريط الحالة كمان (بيل جيتس مش حارمنا من حاجة أبداً) طيب واحد هيقولي خلص ابدأ تسجيل عشان الوقت هيتحسب في التسجيل هقوله متقلقش التسجيل بيكون لكل حركة إنت بتعملها ملهاش علاقة بالوقت ... طيب نعمل ايه ؟ فكروا معايا أنا بحاول الاقي فكرة .. قول إنت يا جمال .. جمال رد وقال : حدد الخلية اللي فيها اسمي وخلي المحاذاة لليمين .. الخلية اللي فيها اسم جمال هي A3 مثلا ننقر عليها بزر الماوس الأيسر (تعليم تقليدي) يا عم حدد الخلية بس خلاص وبعدين من التبويب Home نعمل محاذاة لليمين (اللي ميعرفش يسأل اللي جنبه) نسيت أقولكم على أهم حاجة (منك لله يا جمال نسيتني كنت عايز أقول ايه) .. عنينا وإحنا نسجل على محرر الأكواد (إنتو نسيتو إن النافذتين مفتوحتين ولا ايه ) عشان نشوف سعادته شغال إزاي .. نبدأ تاني نحدد الخلية A3 واحد هيقولي مفيش حاجة حصلت هقولك عشان إنت واقف في المكان الغلط .. لما بنيجي نسجل الماكرو بيتم إضافة موديول جديد يعني ارجع تاني خطوة لورا واضغط على موديول 2 اللي تم إدراجه من غير ما تاخد بالك.. دبل كليك عليه عشان تتابع من الأول .. معلش يا جماعة أنا مركز على حكاية المتابعة دي عشان تقدروا تستفيدوا من التسجيل نحدد الخلية A3 هوب اقف عندك Range("A3").Select السطر دا اتكتب لوحده يا سلام سلام دا أحلى كلام ولا في الأحلام .. بيكتب لوحده يا عمر .!! طيب نحدد خلية تانية هنلاقي السطر اللي فات اتغير وأصبح A4 ايه الحكاية هي الأسطر مش بتفضل ثابته .. أقولك آه بتفضل ثابتة لكن الشغل بيكون على خلايا محددة يعني إنت حددت A3 وبعد شوية غيرت رأيك وحددت A4 هتلاقي محرر الأكواد غير رأيه عشان مينفعش يشتغل على اتنين في نفس الوقت إلا إذا حددتهم مع بعض نروح للتبوبيب Home وركز عينك على محرر الأكواد هتلاقي With Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With كل دا تم إضافته لما دوست على محاذاة لليمين .. طيب جرب بقا إنت اعمل شوية تنسيقات هتلاقي الدنيا بقت هيصة .. طبعا دا كله ميلزمناش أقصد الأسطر الكتير دي كلها أنا يهمني المفيد وبس ..يعني ممكن أختصر الكود اللي فات أقولك آه وبسطر واحد بس مش بدا كله بالشكل ده Range("A3").HorizontalAlignment = xlRight شفتوا بقا إني أشطر من التسجيل .. طبعا دا اللي يأكد كلامي في الأول إنه مينفعش نستخدم التسجيل بشكل دائم وبردو منستغناش عنه ..طيب ايه الفايدة إننا بندور على اللي يهمنا ونبدأ نكتبه بطريقتنا .. طبعا اتعلمنا إزاي نشير إلى الكائن Range بنفتح بعديه قوس وعلامة تنصيص ومننساش بردو نفس القفلة بس علامة التنصيص الأول وقفلة القوس ..معلش أصل الجو برد شوية عليه.. بعد كدا بنتبعه بنقطة ونكتب الخاصية Property طبعا خلاص استوعبتوها كويس HorizontalAlignment معناها محاذاة أفقية وطبعا قلنا إن الخاصية بيتحدد ليها قيمة وهنا القيم معروفة المحاذاة بتكون إما لليمين (ربنا يجعلنا من أهل اليمين) XlRight وإما توسيط وإما محاذا لليسار XlCenter (واحد متوقع إني هقول ربنا لا يجعلنا من أهل الشمال .. بس أنا هكسفه ومش هقولها) XlLeft >> أظن كدا بقا الكود واضح .. يعني التسجيل اللي اتعمل في 12 سطر (أراهن فيه ناس هتعد ورايا) عملناه في سطر واحد ..بس أنا استفدت ايه إني أقدر أطلع الكلمات اللي عايزاها وأشكلها زي ما أنا عايز .. يعني خلاصة الكلام في الحلقة دي إحنا اشتغلنا خبازين (خدنا العجينة اللي هي الماكرو المسجل .. وشكلناها بمهارة عشان تقدر تطلع بالشكل اللي إحنا عايزينه ) وإلى لقاء مع رغي جديد .. الواجبات : قم بتسجيل ماكرو حدد فيه النطاق من A1:B10 وخلي نوع الخط أي نوع ترغبه وحجم الخط 14 ولون الخط أزرق بلاش الأحمر عشان واحد هيقولي ايه حكايتك مع اللون الأحمر وخلي عريض Bold يعني وخلي المحاذاة الأفقية توسيط .. وطبعا اللي هيجيب الواجب تسجيل ماكرو مش هقبله منه .. أنا عايزك تختصر الأسطر الكتير اللي هتظهرلك في أسطر قليلة ... في رعاية الله كان معكم أخوكم أبو البراء من فرن أوفيسنا (يلا ورورني مين هياكل العيش طازة)1 point
-
الحلقة الثانية ونبدأ حلقة جديدة من حلقات مسلسل افتح الباب يا عبد التواب .. اتعلمنا المرة اللي فاتت إزاي ندخل على محرر الأكواد وإزاي نضيف كود واتعرفنا على نافذة المشروع .. دلوقتي جه الوقت اللي لازم تعرف فيه الهيكلة العامة للتعامل مع الأكواد .. يعني ايه ؟ هضرب مثال ليتضح المقال : أنا ساكن في عمارة كبيرة (العمارة زي تطبيق الإكسيل Application) دي العمارة بتاعتنا وساكن في شقة فيها (الشقة دي هي WorkBook المصنف يعني .. والشقة عندي فيها 3 أوض (أوضة 1 - أوضة 2 - أوضة 3 ) دي زي أوراق العمل اللي عندنا Sheet1 و Sheet2 و Sheet3 جوا كل أوضة فيه مجموعة أشياء أو بنسميها كائنات Objects بس حاجات صغيرة.. مثلا فيه تلاجة .. والتلاجة طبعا واخدة حيز من الفراغ بنسميه نطاق Range يعني النطاق ده جوا الأوضة اللي جوا الشقة اللي في العمارة يبقا ممكن نبرمج التلاجة : أيوا صحيح !! هنحدد مكانها .. عمارة.شقة.أوضة(1).تلاجة.فتح بالإكسيل تكون بالشكل ده : Application.ThisWorkbook.Sheets(1).Range("A1").Select بكدا نكون عرفنا هيكلة الكائنات الموجودة عندنا Objects .. في السطر اللي فات بدأنا بالعمارة أقصد التطبيق متبوعاً بنقطة Period ثم حددنا الشقة أقصد المصنف Workbook وهنا أشرنا للمصنف الحالي ThisWorkbook، وبعدين حددنا الأوضة اللي هي الشيت Sheets (1) ثم أخيرا التلاجة أقصد النطاق المراد العمل عليه وهو هنا الخلية A1 بهذا الشكل Range("A1) . >>> وأخيرا .. بعدما وصلنا للتلاجة هنعمل ايه ؟ أكيد هنفتحها عشان نشوف أي حاجة نشربها بعد الكلام الكتير ده الواحد ريقه نشف اللي يبل ريقكم .. أيوا نفتح دا فعل والفعل في اللغة العربية نعرفه إزاي .. لما نحط قبليه كلمة (أن) يعني لو قلنا (أن يفتح) كدا فيه معنى واضح .. أما لو قلنا كلمة حجم وحطينا قبليها (أن حجم) دي ملهاش معنى ، فبالتالي كلمة يفتح فعل أما كلمة حجم فدي اسم أو صفة (كدا معلمي اللغة العربية هيبلغوا عني إني بدي دروس في العربي) !! يرجع مرجوعنا لموضوعنا إحنا ليه شرحنا الفعل لأن الفعل في البرمجة بيساوي كلمة Method يعني لما نشوف كلمة Method دي نربطها بحدث الفعل تلاجة.فتح يعني لو جربنا السطر اللي فات ووقفنا في خلية بعيدة شوية ونفذنا الكود هيحدد الخلية A1 .. مبروك عليكم السطر الأول من الأكواد الفعل هنا أو الـ Method اسمه Select وترجمتها حدد .. أي أننا قمنا بالإشارة لكل الكائنات وصولا إلى الخلية A1 ثم نأمر الكود بتحديد النطاق. ناخد مثال مهم أوي عشان نفهم الـ Method بشكل أكبر Application.Quit هنا لما اكتب الكائن Application وبعدين أكتب النقطة هلاحظ حاجة في غاية الأهمية .. ايه هيا؟ محرر الأكواد بيقدم مساعدة لينا (ودي عشان الجماعة اللي بيقولوا المشكلة في اللغة .. خلوا بالكم) بيظهر لنا قايمة شبه القايمة المنسدلة بس مش منسدلة فيها كلمات كتيرة .. وهنلاقي شكلين : الشكل الأول عمنا بيل جيتس بيشاور بصبعه على ورقة والشكل التاني علامة شبه الطوبة الخضرا .. الشكل الأول بنسمية الخاصية Property وهنشرحها بالتفصيل كمان شوية ، والشكل التاني الطوبة الخضرا ربنا يجعل حياتكم خضرا ومزهزهة هي دي الـ Method أو الفعل طيب هعرف إزاي إذا كانت كلمة Quit دي Method ولا Proerty ببساطة بص على شكلها هتلاقي علامة الطوبة الخضرا اللي قلنا عليها يعني كلمة Quit دي Method وطبعا الحتة اللي فاتت للجماعة اللي مش بيعرفوا إنجليزي زي حالاتي ، أما بالنسبة للي بيعرفوا إنجليزي فيبصوا لكلمة Quit هيلاقوا معناها اخرج ودا فعل يعني Method> يبقا خلاصة الكلام السطر اللي فات بيعطي أمر للخروج من التطبيق. نقطة تانية في غاية الأهمية لما نلاقي نفسنا مش عارفين حروف الكلمة اللي بنكتبها .. بعد النقطة ولما تظهر القايمة بكتب أول حرف أو حرفين في الكلمة اللي أنا عايزها ، وبعدينباستخدام الأسهم فوق وتحت أقف على الكلمة اللي عليها العين والنن واضغط TAB من لوحة المفاتيح اللي تحت حرف الذال يا رجالة (أنا عارف إن فيه ناس هتدور دلوقتي على حرف الذال ومش هتلاقيه . بصوا في لوحة المفاتيح أيوا بصوا .. فوق شمال فوق شمال فوق شمال تحت زر Esc هتلاقي حرف الذال ، وتحت الذال هتلاقي Tab عليها سهمين سهم متجه لليسار وآخر لليمين .. لو ملقتش السهمين قوم حالا رجع لوحة المفاتيح للراجل اللي إنت اشتريت منه دا نصب عليك) المهم لما نضغط Tab هنلاقي الكلمة اتكتبت لوحدها .. يا سلام ونعم الكلام ونعم المساعدة شكرا يا بيل !! ممكن أريح ايدي شوية عشان والله ايدي تعبت !!! ---------------------------------------------- طيب دي الـ Method فيه حاجة تانية اسمها Property ودي ترجمتها خاصية (وتشمل زي ما قلنا الاسم أو الصفة) تلاجة.حجم حجم دي هي خاصية التلاجة Property فلو حبينا نضع قيمة لحجم التلاجة تلاجة.حجم = 10 قدم نلاحظ إن الخاصية ليها قيمة وعشان نضع قيمة ليها بنحط علامة يساوي متبوعة بقيمتها ناخد مثال على الخاصية Property عشان عارف إنتو تهتو مني ... ركزوا يا شباب! Application.Caption= "Officena" طبعا إحنا عارفين شريط العنوان بيكون فيه اسم الملف أو المصنف متبوعا بشرطة - وبعدين اسم التطبيق Excel طيب لو حبينا نخليه باسم منتدانا الحبيب يبقا ننفذ السطر اللي فوق الكلمة اللي جات ورا Application اللي هي كلمة Captionدي خاصية من خواص التطبيق مش فعل يا مستر حمدي .. وطالما إنها خاصية فبنحدد ليها قيمة بعلامة يساوي (واحد هيعمل فيها مركز طيب إحنا نسينا علامة يساوي مع Quit أقولك الفعل مش بيتحدد له قيمة ، القيمة بتكون مع الخاصية أو الاسم أما الفعل له حاجات تانية اسمها بارامترات .. متخرجنا برا الموضوع) المهم بنحدد قيمة للخاصية وليكن مثلا كلمة Officena وطبعا دي نص ، وعرفنا من المرة اللي فاتت إن النصوص توضع بين أقواص تنصيص " " .. اللي مش عارف يرجع يراجع من الأول أنا مش بحب أكرر المعلومة أكتر من 100 مرة .. لو نفذنا بقا السطر اللي فات هنلاقي شريط العنوان اتغير (يا حلااااااااوة) واحد هيقولي طيب إزاي نكتب الأسطر اللي إنت نازل دش فيها أقولك فيه قايمة اسمها Insert اختار منها Module أو فيه علامة في شريط الأدوات جنب علامة الإكسيل على يمينها علطول اختار منها Module ,وضع فيها الأسطر المراد تنفيذها يرجى مراعاة حاجتين الأسطر مبتكونش عريانة كدا لازم نغطيها بلحاف وبطانية يعني اللحاف Sub وبعدين اسم الإجراء ، والبطانية End Sub ونحاول عشان نقدر نتعلم صح نبص كويس قبل تنفيذ الكود وبعده يعني في المثال الأخير بص لشريط العنوان هتلاقي Excel مشرف في العنوان ، وبعد تنفيذ الكود هتلاقي Officena هي اللي نورت ... وإلى لقاء في حلقة جديدة من حلقات افتح الباب أسأل المولى عزوجل أن ينفع بهذا الرغي جموع المسلمين وأن يكون شاهدا لي لا علي ..1 point
-
1 point
-
1 point