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

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


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





الحلقة الخامسة النطاقات وطرق تحديدها

السلام عليكم ورحمة الله وبركاته اليكم بالحلقة الخامسة من دروس الـ VBA للأستاذ الكبير ياسر خليل ........................ ..



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

السلام عليكم ورحمة الله وبركاته
اليكم بالحلقة الخامسة من دروس الـ VBA
للأستاذ الكبير ياسر خليل

 ................................................................................................
نستكمل حلقاتنا للي متابعين .. وللي مش متابعين بردو!
 
هنتكلم النهاردة عن النطاقات 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

تاني طريقة : استخدام الخاصية Cells ، ودي مختلفة شوية
Cells(4, 5).Select

هنا بنفتح قوس بعد الخاصية Cells وبنستخدم أرقام (رقم الصف الأول ، وبعدين رقم العمود) ودي شرحناها بالتفصيل وعرفنا إن رقم الصف 4 ، ورقم العمود E هيكون رقم 5 ، ونفس القصة بعد الإشارة للخلية الهدف نقول لمحرر الأكواد حددها بكلمة Select
 
تالت طريقة زي تاني طريقة ..إننا نستخدم Cells بردو (إزاي دي ؟؟!!)

Cells(4, "E").Select

هنا لو موضوع رقم العمود دا مضايقك ، ولا يهمك هنشوف لك بديل ، ممكن تكتب اسم العمود بس مننساش أقواس التنصيص !!
رابع طريقة : الطريقة المختصرة
[E4].Select

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


انتهى الجزء الاول biggrin2

السؤال التاني : كيف يمكن تحديد النطاق 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 وأسميها عن طريق وضع الماوس فى صندوق الاسم ونكتب اسم وليكن Alsaqr

Range("Alsaqr").Select

ومننساش إن Alsaqr دي اسم للنطاق ، والاسم نص ، والنص يؤكل إذاً الجبن يؤكل ..أعتذر (سرحت في الفلسفة : الخوف جبن والجبن يؤكل إذاً الخوف يؤكل ..دا منطق فاسد)
 
أما المنطق بتاعنا مش فاسد الحمد لله ... الاسم نص والنص يوضع بين أقواس تنصيص.


خامس طريقة: الطريقة المختصرة
[A1:C10].Select


انتهى الجزء الثانى 63

الجزء الثالث
 
عن طريقة تحديد خلايا أو نطاق في ورقة عمل أخرى داخل المصنف .. 1


ودي بسيطة بس ركزوا لأنها مختلفة شوية أد كدا (طبعا محدش شايف ايدي والحمد لله ، لأنكم لو شفتوا ايدي هتدعوا عليا !!..)
Application.Goto Sheets(3).Range("A1:C10")

الخاصية Goto دى مش خاصية يامتنورين دى m*ethod لأنها حدث أو فعل (نسينا ..كله يراجع تاني ، وإلا مش هكمل )
 
معناها( اذهب إلى ) ، وبعدين مسافة ، وبنحدد المكان اللي هيروحله محرر الأكواد .. نخلي بالنا هنا مستخدمناش Select والله يا أبطال مستخدمناها ، ولو استخدمناها محرر الأكواد هيفضحنا برسالة خطأ

MzEwNzA3MQ3636001
 
الـ m*ethod هنا اللى اسمها Goto أغنت عن الـm*ethod اللى اسمها Select .. لأنه ببساطة مينفعش فعلين في نفس الوقت .. هو دا النظام إذا كان عاجبكم ...
 
مينفعش حدثين مع بعض يا إما Select يا إما Goto
 
طيب نجرب نستعمل Select ونشيل Goto اللي إحنا مش متعودين عليها كدا
 
نجرب ، وإحنا واقفين في الشيت رقم واحد وننفذ السطر التالي

Sheets(3).Range("A1:C10").Select

شكلها صح ، لكن للأسف غلط ..لأننا دلوقتي بنتعامل مع ورقة عمل تانية ، بالتالي لازم عشان نعمل سطر زي ده ، وميكونش فيه رسالة خطأ ، لازم ولابد وحتما إننا ننشط ورقة العمل اللي هنشتغل عليها بـ m*ethod اسمها Activate (نشط)
Sheets(3).Activate
Sheets(3).Range("A1:C10").Select

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


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

قاعة أكاديمية الصقر.الصف الأخير.الكرسى الأخير.تحديد(أبو البراء)

دمتم في رعاية الله 81






























































 
 


21-02-2018 03:29 مساء
مشاهدة مشاركة منفردة [1]
amaar
عضو نشيط
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 14-02-2018
رقم العضوية : 4350
المشاركات : 94
الجنس : ذكر
تاريخ الميلاد : 1-1-1987
الدعوات : 2
يتابعهم : 12
يتابعونه : 4
قوة السمعة : 250
 offline 
look/images/icons/i1.gif الحلقة الخامسة النطاقات وطرق تحديدها
جزاك الله كل خير
احسنت
توقيع :amaar
113سبحان الله وبحمده سبحان الله العظيم113


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

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

22-02-2018 10:17 مساء
مشاهدة مشاركة منفردة [4]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10444
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 1
يتابعونه : 535
قوة السمعة : 36522
عدد الإجابات: 254
 offline 
look/images/icons/i1.gif الحلقة الخامسة النطاقات وطرق تحديدها
جزاك الله كل خير أخي الغالي إسلام ومشكور على اهتمامك بإعادة نشر الحلقات




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


 










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

الساعة الآن 05:34 مساء