-
Posts
13,165 -
تاريخ الانضمام
-
تاريخ اخر زياره
-
Days Won
412
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو ياسر خليل أبو البراء
-
أعتقد أن مشاركة الأستاذ أبو محمد عباس كافية وشافية وبسيطة جدا ولا تحتاج لتعقيد صراجة استفدت كثيرا من هذا الكود .. بارك الله فيكم
-
السلام عليكم عندي مشكله ممكن تساعدني في الاكسل
ياسر خليل أبو البراء replied to ابو منتظر's topic in منتدى الاكسيل Excel
تفضل أخي الفاضل Distrbute Numbers.rar -
السلام عليكم عندي مشكله ممكن تساعدني في الاكسل
ياسر خليل أبو البراء replied to ابو منتظر's topic in منتدى الاكسيل Excel
نعم أخي الكود يخص ملفك الذي أرفقته .. يجب عليك التغيير بما يتلائم مع ملفك الأصلي إذا لم تنجح في التعديل قم بإرفاق ملفك للعمل عليه -
مطلوب برنامج توثيق مستندات
ياسر خليل أبو البراء replied to صلاح الصغير's topic in منتدى الاكسيل Excel
أخي الحبيب أنا مش متابع الموضوع من البداية وحاسس اني تايه فيه وبعدين معاك عمالقة في الموضوع يعني مش محتاج غير إنك توضح تاني طلبك وابعد عن التعقيدات والألفاظ الصعبة خليك سهل في الطلب عشان يكون واضح لو فيه رزالة اشرح طلبك بالتفصيل تاني ولو فيه ملف مرفق يكون أفضل مع شرح الطلب -
بارك الله فيك أخي صلاح أخي عزيز بالفعل قم بحذف الصفوف الزائدة والأعمدة الزائدة في كل أوراق العمل بشكل مبدئي ..كيف ذلك؟ تعالى على آخر صف ميكونش فيه بيانات يعني آخر صف فيه بيانات .. الصف اللي وراه علطول وحدد الصف بالكامل من خلال النقر عل رقم الصف وسيب الماوس ومن لوحة المفاتيح اضغط Shift+CTRL+ سهم لتحت هيتحدد معاك كل الصفوف الغير مرغوب فيها ..كليك يمين Delete نفس الحكاية مع الأعمدة حدد آخر عمود وبعدين اضغط SHIFT +CTRL+ سهم شمال عشان يحدد كل الأعمدة الزائدة وبعدين كليك يمين على راس العمود ثم Delete كرر نفس الكلام مع كل أوراق العمل واحفظ الملف وشوف حجم الملف بعد ما عملت كدا قل ولا لا.. لو قل شوية قلنا لو قل كتير قلنا لو مقلش متقولناش
-
طيب كفكرة ليه مش بتعطيها اسم مميز عشان متعقدش الأمور طالما إن الملف اشتغل كويس شوف المشكلة فين وحاول تحلها يعني مثلا مدرسة عبد الحميد بن باديس الثانوية خليها عبد الحميد بن باديس ث والتانية عبد الحميد بن باديس ب دا مجرد اقتراح .. وبعدين أنا مكنتش أعرف إن فيه أسماء مدارس متشابهة وبعدين لما فيه أسماء مدارس متشابهة ليه 3 شروط ليه مش شرطين بس يعني خلية يكون الاسم وخلية فيها نوع المؤسسة ليه 3 شروط رغم إن كدا يبقا شرطين
-
أخي الحبيب وأستاذي أبو محمد جرب الكود بالشكل التالي يرجى مراجعة النطاقات عشان أنا تهت المهم الفكرة Sub تصفير_الرصد() Dim UnionRange As Range Application.ScreenUpdating = False Set UnionRange = Union(Range("F6:H55,J6:L55,O6:O55,R6:T55,V6:X55,AA6:AA55,AD6:AF55,AH6:AJ55,AM6:AM55,AP6:AR55"), _ Range("AT6:AV55,AY6:AY55,BB6:BD55,BF6:BH55,BK6:BK55,BN6:BP55,BR6:BT55,BW6:BW55,BZ6:CB55,CD6:CF55"), _ Range("CU6:CU55,CP6:CR55,CL6:CN55,CI6:CI55,F206:H255,J206:L255,O206:O255,R206:T255,V206:X255,AA206:AA255"), _ Range("AD206:AF255,AH206:AJ255,AM206:AM255,AP206:AR255,AT206:AV255,AY206:AY255,BB206:BD255,BF206:BH255,BK206:BK255,BN206:BP255"), _ Range("BR206:BT255,BW206:BW255,BZ206:CB255,CD206:CF255,CU206:CU255,CP206:CR255,CL206:CN255,CI206:CI255,F406:H455,J406:L455"), _ Range("O406:O455,R406:T455,V406:X455,AA406:AA455,AD406:AF455,AH406:AJ455,AM406:AM455,AP406:AR455,AT406:AV455,AY406:AY455"), _ Range("BB406:BD455,BF406:BH455,BK406:BK455,BN406:BP455,BR406:BT455,BW406:BW455,BZ406:CB455,CD406:CF455,CU406:CU455,CP406:CR455"), _ Range("CL406:CN455,CI406:CI455,F606:H655,J606:L655,O606:O655,R606:T655,V606:X655,AA606:AA655,AD606:AF655,AH606:AJ655"), _ Range("AM606:AM655,AP606:AR655,AT606:AV655,AY606:AY655,BB606:BD655,BF606:BH655,BK606:BK655,BN606:BP655"), _ Range("BR606:BT655,BW606:BW655,BZ606:CB655,CD606:CF655,CU606:CU655,CP606:CR655,CL606:CN655,CI606:CI655")) UnionRange.ClearContents Application.ScreenUpdating = True Range("F1").Select End Sub
-
أخي الحبيب سليم جزيت خيرا وأسعدك الله كما أسعدتني بهذه الكلمات الطيبة قل بفضل الله وبرحمته فبذلك فليفرحوا .. الوسيلة هي توفيق من الله وليس من العبد ، وليس للعبد أن يملك الوسيلة ..والحمد لله أن وفقني الله إلى هذه الوسيلة وهذا الأسلوب سدد الله خطاك ووفقك الله ورعاك أخي في الله سليم (ذو الهمة العالية والنشاط الملحوظ)
-
أخي الكريم Morestudy Thank you very much for your nice words معلش طلبت معايا شوية إنجليزي ..أشكرك أخي الحبيب على كلماتك المشجعة ، والحمد لله بدأت تمطر وبقبت إنت أول واحد استفاد ربنا ييسر الأمور .. بس بالنسبة لخفة الظل دي عملية نسبية .. يعني فيه ناس شايفه إنه خفة ظل وناس تانية أكيد هتشوفه إنه أسلوب رخم وغلس ومش مفيد (الاختلاف في الرأي لا يفسد للكود قضية) أنا يهمني في النهاية والبداية المبتدئ الذي يخشى أن يخطو خطواته الأولى فهو بمثابة الطفل الصغير الذي يتعلم السير فهو يريد أن يجد من يمسك بيديه حتى يستطيع ويتجرأ على المشي ، وبعد أن يتقن فن المشي ساعتها يستغني عن مد له يد العون هههه يعني كدا زي ما بيقول الشاعر علمته رمي السهام فلما اشتد ساعده رماني ..
-
الحلقة الخامسة **************** السلام عليكم ورحمة الله وبركاته نستكمل حلقاتنا للي متابعين .. وللي مش متابعين بردو! هنتكلم النهاردة عن النطاقات في VBA وطرق تحديدها ... نبدأ الأول نعرف معنى كلمة نطاق : هل النطاق مجموعة خلايا متجاورة (جنب بعض) ولا مجموعة خلايا غير متجاورة (خلايا زعلانة ومتخاصمة فبعيد عن بعض) ؟ أعتقد إن فيه كتير فاهمين كلمة نطاق غلط .. أولا نطاق بالانجليزي Range والنطاق في الإكسيل بيكون مطاطي (مرن) بيشمل مجموعة كبيرة من المفاهيم :: الخلية الواحدة اسمها نطاق .. واحد يقولي يعني A1 دي نطااااااااااق .. إنت كدا خليت الخلية تاخد أكبر من حجمها هي مجرد خلية ، أرد وأقوله .. الخلية نطاق ومجموعة الخلايا المتجاورة نطاق ، ومجموعة الخلايا الغير متجاورة نطاق ، والصف الواحد نطاق ، ومجموعة صفوف نطاق ، والعمود الواحد نطاق ، ومجموعة أعمدة نطاق .. بس خلاااص (الحاجة الوحيدة اللي لا تصلح إنك تحدد نطاق في أكتر من ورقة عمل .. يعني الشغل كله في تحديد النطاقات بيكون في ورقة واحدة .. بمعنى آخر ميجيش واحد ويقول عايز أحدد مجموعة خلايا في الورقة الأولى + مجموعة خلايا في الورقة التانية دي لسه بيل جيتس معلمهاش) جميل لحد دلوقتي يبقا كدا اتعرفنا على لفظ نطاق ..طيب كلنا عارفين إننا عشان نقدر ننفذ أمر معين لازم الأول نحدد النطاق اللي هيتم التنفيذ عليه .. مينفعش أقول مثلا نسق الخلايا ولونها وخلي حجمها 14 - طبيعي إن اللي بيفكر كدا يبقا فاهم إن الكمبيوتر بيسمعه وعارف عايز ايه ، مفيش خلاف إننا لما بنتعامل مع الكمبيوتر مننساش إننا بنتعامل مع آلة ، يعني مهما كانت درجة تفوقها فهي غبية ، والغباء هنا صفة مش مذمومة ، الغباء اللي أقصده إنه لازم تمشي خطوات منطقية ومنطقية جدا عشان تقدر تحقق هدفك .. فأول خطوة دايما للتعامل غالبا بتكون تحديد النطاق اللي هشتغل عليه .. عشان كدا هافرد الشرح عن تحديد الخلايا والنطاقات بشكل تفصيلي .. ادعوا لي ربنا يوفقني في توصيل المعلومة) نبدأ على بركة الله .. واحد هيقولي : كل دي بداية دا إنت هتطلع عنينا ، على ما نعرف المعلومة (بس أحب أوضح إن الأمور لما تكون مفهومة تمام الفهم والإدراك ، دا بيسهل عملية التعلم بشكل كبير ؛ عشان كدا متستغربوش إني برغي كتير .. الهدف في النهاية توصيل المعلومة بأسلوب غير تقليدي) بصراحة أنا مش مرتب هشرح إزاي الموضوع نظرا لأن فيه معلومات كتير وخايف تتوهوا مني .. بس دلوقتي خطرت لي فكرة إننا نقسم الموضوع ، ونتعامل مع جزئية جزئية أول جزئية هنتكلم عليها الخلية المفردة (الخلية : زي ما إحنا عارفين عبارة عن التقاء الصف مع العمود ..معلومة قديمة .. والصف بيكون عبارة عن رقم ، والعمود عبارة عن اسم حرف .. بردو معلومة قديمة .. والخلية لما بنسميها بتكون عبارة عن اسم العمود وبعديها رقم الصف .. بردو معلومة قديمة!!) (شكلي كدا معنديش معلومة جديدة أديهالكم النهاردة !!) مثال : لو قلنا الصف الرابع والعمود الخامس ، هنعبر عنه إزاي ؟ نحسبها : نبدأ الأول بالعمود (نظرا لأن العمود رأسي وأنا رأسي مشغولة بالفكرة) ، العمود الخامس دا فين .. عشان نعرف يبقا لازم ناخد درس إنجليزي الأول ونركز على الحروف (أصلي معلم إنجليزي وعايز أسوق لنفسي دروس) ..نبدأ نقول مع بعض : A و B و C و D و E (بس خلاص وصلنا للحرف الخامس يبقا العمود الهدف هو العمود E .. بلغة البرمجة Target.Column=5 .. محدش يدقق أوي في الجملة دي ، بعدين هنعرفها ، دا كان حرف العمود ، والرقم مش محتاج نحسبه لأن الصف الهدف هو الرابع .. بلغة البرمجة Target.Row=4 (بكدا تكون عنوان الخلية الهدف هي الخلية E4 .. وبلغة البرمجة Target.Address=$E$4 السؤال الأول : كيف يمكن تحديد الخلية E4 في محرر الأكواد ؟ الإجابة : الإجابات متنوعة ، نشوف كل الطرق عشان نتعلم ... أول طريقة : استخدام الخاصية Range >> نطبق على الخلية E4 مثلا Range("E4").Select هنا لازم بعد الخاصية Range بنفتح قوس ) وبعد القوس قوس تنصيص " وبعدين عنوان الخلية .. وزي ما اتعودنا القفلة يا رجالة ... كدا إحنا أشرنا للخلية E4 ، ونقول لمحرر الأكواد حددها بكلمة Select تاني طريقة : استخدام الخاصية Cells ، ودي مختلفة شوية Cells(4, 5).Select هنا بنفتح قوس بعد الخاصية Cells وبنستخدم أرقام (رقم الصف الأول ، وبعدين رقم العمود) ودي شرحناها بالتفصيل وعرفنا إن رقم الصف 4 ، ورقم العمود E هيكون رقم 5 ، ونفس القصة بعد الإشارة للخلية الهدف نقول لمحرر الأكواد حددها بكلمة Select تالت طريقة زي تاني طريقة ..إننا نستخدم Cells بردو (إزاي دي ؟؟!!) Cells(4, "E").Select هنا لو موضوع رقم العمود دا مضايقك ، ولا يهمك هنشوف لك بديل ، ممكن تكتب اسم العمود بس مننساش أقواس التنصيص !! رابع طريقة : طريقة الباشمهندس طارق محمود (أنا سميتها كدا لأنها المفضلة عند الباشمهندس طارق) [E4].Select ويا ريت نعرف كل الطرق ، لأن كل طريقة وليها استخدامها في مواقف معينة .. دي بتيجي مع الخبرة .. نقطة أخيرة قبل ما ننتقل للجزئية التانية .. افتراضيا الشغل بالشكل ده على ActiveSheet يعني كل الأسطر اللي كتبناها ممكن نضيف قبل كل سطر كلمة ActiveSheet متبوعة بنقطة (عشان لما نبدأ نتعامل مع أكتر من ورقة نخلي بالنا .. بس لو شيلناها بيفهم محرر الأكواد إننا بنتعامل مع المصنف النشط الورقة النشطة) @ انتهى الجزء الأول@ السؤال التاني : كيف يمكن تحديد النطاق A1:C10 في محرر الأكواد؟ الإجابة : أجب بنفسك (ارحموني شوية كله عليا لوحدي ، أنا تعبت!!) Range("A1:C10").Select هنا استخدمنا الخاصية Range (واحد هيسأل هي Range خاصية ولا كائن .. أقولك هي كائن وخاصية ، هي من ضمن خواص ورقة العمل ، وفي نفس الوقت كائن (يعني ممكن نقول تابع ومتبوع) ...هنا عشان نحدد نطاق الموضوع في منتهى البساطة بنحدد أول خلية في النطاق وآخر خلية في النطاق (لما نجرب نحدد بالماوس الخلية A1 وبعدين نضغط Shift من لوحة المفاتيح ونحدد الخلية C10 هنلاقي النطاق اللي ما بين الخليتين تم تحديده بالكامل ، أنا قلت الحتة دي ليه ؟ ؛ عشان أوصلكم معلومة إننا كل اللي بيهمنا عشان نحدد نطاق بدايته ونهايته ..... نلاحظ إننا فصلنا بين البداية والنهاية بالعلامة دي : طريقة تانية : Range("A1", "C10").Select زيها بس الفصل بين البداية والنهاية بيكون بفاصلة .. وهنا لاحظ الاختلاف بنفسك (مش كل حاجة لازم نشرحها بالتفصيل .. فيه ناس بدأت تحس بالملل والرتابة ) طريقة تالتة : اننا نستخدم Range و Cells مع بعض Range(Cells(1, 1), Cells(10, 3)).Select واحد هيبص للسطر اللي فات ويقولي ايه الكلكعة دي إنت كنت ماشي زي الفل والأمور واضحة ..مالها بقت ضلمة ليه كدا ؟؟ يا حاج سعد ولا ضلمة ولا حاجة إنت بس ركز كد .. الخاصية Range بيكون وراها قوسين بين القوسين بداية ونهاية .. البداية Cells(1, 1) اللي هي مرادف الخلية A1 والنهاية Cells(10, 3) اللي هي الخلية C10 بكدا نكون حددنا البداية والنهاية داخل الخاصية Range ...أظن الأمور كدا بقت واضحة يا شوقي !! طريقة رابعة إننا نسمي النطاق في ورقة العمل .. وطبعا دي أمرها بسيط ..داخل ورقة العمل بحدد A1:C10 وأسميها عن طريق وضع الماوس في صندوق الاسم ونكتب اسم وليكن Officena Range("Officena").Select ومننساش إن Officena دي اسم للنطاق ، والاسم نص ، والنص يؤكل إذاً الجبن يؤكل ..أعتذر (سرحت في الفلسفة : الخوف جبن والجبن يؤكل إذاً الخوف يؤكل ..دا منطق فاسد) أما المنطق بتاعنا مش فاسد الحمد لله ... الاسم نص والنص يوضع بين أقواس تنصيص. خامس طريقة (طريقة باشمهندس المنتدى .. من أحب الناس لقلبي) [A1:C10].Select @انتهى الجزء الثاني@ الجزء الثالث عن طريقة تحديد خلايا أو نطاق في ورقة عمل أخرى داخل المصنف .. ودي بسيطة بس ركزوا لأنها مختلفة شوية أد كدا (طبعا محدش شايف ايدي والحمد لله ، لأنكم لو شفتوا ايدي هتدعوا عليا !!..) Application.Goto Sheets(3).Range("A1:C10") الخاصية Goto دي مش خاصية يا متنورين ، دي Method لأنها حدث أو فعل (نسينا ..كله يراجع تاني ، وإلا مش هكمل ) معناها( اذهب إلى ) ، وبعدين مسافة ، وبنحدد المكان اللي هيروحله محرر الأكواد .. نخلي بالنا هنا مستخدمناش Select والله يا أبطال مستخدمناها ، ولو استخدمناها محرر الأكواد هيفضحنا برسالة خطأ الـ Method هنا اللي اسمها Goto أغنت عن الـ Method اللي اسمها Select .. لأنه ببساطة مينفعش فعلين في نفس الوقت .. هو دا النظام إذا كان عاجبكم ... مينفعش حدثين مع بعض يا إما Select يا إما Goto طيب نجرب نستعمل Select ونشيل Goto اللي إحنا مش متعودين عليها كدا نجرب ، وإحنا واقفين في الشيت رقم واحد وننفذ السطر التالي Sheets(3).Range("A1:C10").Select شكلها صح ، لكن للأسف غلط ..لأننا دلوقتي بنتعامل مع ورقة عمل تانية ، بالتالي لازم عشان نعمل سطر زي ده ، وميكونش فيه رسالة خطأ ، لازم ولابد وحتما إننا ننشط ورقة العمل اللي هنشتغل عليها بـ Method اسمها Activate (نشط) Sheets(3).Activate Sheets(3).Range("A1:C10").Select كدا نتلاشى رسالة الخطأ ، والحمد لله ..خلاصة الكلام إننا لو استخدمنا Select أثناء التعامل مع ورقة عمل أخرى ، يبقا لازم ننشط ورقة العمل (نديها منشطات عشان متهنجش مننا .. ممكن نستعين بالأستاذ الغالي اللي غايب عننا رجب جاويش) وحتى النطاقات المسماة زي النطاق اللي سميناه من بدري باسم Officena لو أنا في ورقة عمل تانية ، مش هينفع أستخدم Select معاها بردو .. فالأفضل في التعامل مع أوراق العمل الأخرى استخدام Goto Application.Goto Range("Officena") @انتهى الجزء التالت@ وانتهت الحلقة .. مش عارف إذا كنت استوفيت الموضوع النهاردة بالتفصيل ولا لا .. بس عموما لو حد عنده إضافات بالنسبة لتحديد النطاقات يفيدنا بيها .. أنا قلت اللي عندي ، قولوا إنتو اللي عندكو (بارك الله فيكم على حسن المتابعة ، وإلى لقاء مع حلقة جديدة ومعلومات جديدة ..أستودعكم الله) الواجب : متروك لكم حرية عمل مصنف ، وتنوع فيه الطرق المختلفة للتحديد .. كان معكم على الهواء تحديداً في الكرسي الأخير من الصف الأخير في قاعة أوفيسنا .. قاعة أوفيسنا.الصف الأخير.الكرسي الأخير.تحديد(أبو البراء) دمتم في رعاية الله
-
الحلقة الرابعة طبعا أنا ايدي بتترعش وأنا بكتب كلمة الحلقة (الرابعة) ، دا عشان رقم 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 إلى لقاء مع حلقة جديدة من حلقات افتح الباب وزغردي يا رباب (دا إذا عدا اليوم بسلام ومكانش فيه استدعاء) دمتم في عون الله وحفظه
-
الخاصية Resize في لغة البرمجة
ياسر خليل أبو البراء replied to ياسر خليل أبو البراء's topic in منتدى الاكسيل Excel
الأخ الفاضل محمد هذا ما أيقنته مؤخرا في حقيقة الأمر .. حتى أنني فكرت في أن أقوم بعملية التعلم بشكل مختلف لعله يجذب الانتباه ويزيل الغموض في عالم الأكواد وهذا ستجده في رابط هذا الموضوع http://www.officena.net/ib/index.php?showtopic=56941 تقبل تحياتي -
الخاصية Offset ف لغة البرمجة
ياسر خليل أبو البراء replied to ياسر خليل أبو البراء's topic in منتدى الاكسيل Excel
الأخ الكريم محمد القمجي وجزيت خيرا أخي ..بارك الله فيك الأخ احب العلم أحسن الله إليك والأروع دائما هو تشجيعكم واستفادتكم قبل أي شيء تقبلوا تحياتي -
الحلقة الثالثة طبعا واحد هيقولي ارحم نفسك .. كفاية كدا النهاردة ..!! أقولك ايه النهاردة أجازة وبعدين أنا عايز أخلص الشوية اللي دايما بنطول فيهم عشان نبدأ نتعلم جديد .. مش كل اما دورة تبدأ تلاقي الموضوع يبقا زي الفل وياخد وقته في البدايات والأساسيات وفجأة الدورة تتقطع .. هنتكلم شوية في الحلقة دي عن تسجيل الماكرو .. واحد رفع ايده وبيقول أيوا أنا متمكن فيها (أقوله كتر خيرك !) بس أنا مش عايزك متمكن .. إحنا بس هنستفيد من حكاية التسجيل دي في أمور معينة .. واحد تاني هيرفع ايده ويقول طيب أنا أقدر أعمل الكود بالشكل اللي أنا عايزة من غير ما يكون عندي فكرة بالأكواد ووجع الدماغ هقوله إنت صح وغلط .. صح من جهة وغلط من جهة .. بس مش هناقش الموضوع ده المهم نبدأ نشوف ايه حكاية التسجيل دي.. قبل ما نبدأ نتعلم إزاي نخلي نافذة الإكسيل ونافذة محرر الأكواد جبنا إلى جنب خلي عينك ع الاتنين ..!! نفتح الاتنين (بلاش الجمعه عشان أجازة الموظفين) نفتح النافذتين وبعدين نفعل نافذة الإكسيل ونضغط على علامة الويندوز اللي ف لوحة المفاتيح اللي ما بين 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 يعني وخلي المحاذاة الأفقية توسيط .. وطبعا اللي هيجيب الواجب تسجيل ماكرو مش هقبله منه .. أنا عايزك تختصر الأسطر الكتير اللي هتظهرلك في أسطر قليلة ... في رعاية الله كان معكم أخوكم أبو البراء من فرن أوفيسنا (يلا ورورني مين هياكل العيش طازة)
- 17 replies
-
- 11
-
الحلقة الثانية ونبدأ حلقة جديدة من حلقات مسلسل افتح الباب يا عبد التواب .. اتعلمنا المرة اللي فاتت إزاي ندخل على محرر الأكواد وإزاي نضيف كود واتعرفنا على نافذة المشروع .. دلوقتي جه الوقت اللي لازم تعرف فيه الهيكلة العامة للتعامل مع الأكواد .. يعني ايه ؟ هضرب مثال ليتضح المقال : أنا ساكن في عمارة كبيرة (العمارة زي تطبيق الإكسيل 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 هي اللي نورت ... وإلى لقاء في حلقة جديدة من حلقات افتح الباب أسأل المولى عزوجل أن ينفع بهذا الرغي جموع المسلمين وأن يكون شاهدا لي لا علي ..
- 17 replies
-
- 10
-
هل يمكن تنفيذ هذا فى الاكسل ؟
ياسر خليل أبو البراء replied to فادى سامى's topic in منتدى الاكسيل Excel
أخي الفاضل إذا لم تجد استجابة لطلبك فحاول أن تغير استراتيجية الطلب .. ارفق ملف مشابه مثلأ حاول توصل للحل بخطوات وليس خطوة واحدة كبيرة نظم ملفك بشكل يسهل العمل عليه ليحقق لك ما تريد أنا لاحظت عدم تفاعل الأعضاء في موضوعك عشان كدا قلت أنصحك لو حاجة صعبة ممكن تغير أسلوب تفكيرنا فتبقا سهلة ..يا ريت تكون نصيحتي ليها دور في الوصول لحل