اذهب الي المحتوي
أوفيسنا

نجوم المشاركات

  1. ياسر خليل أبو البراء

    ياسر خليل أبو البراء

    المشرفين السابقين


    • نقاط

      37

    • Posts

      13,165


  2. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      8

    • Posts

      9,814


  3. رمهان

    رمهان

    الخبراء


    • نقاط

      5

    • Posts

      2,390


  4. محمود_الشريف

    محمود_الشريف

    الخبراء


    • نقاط

      4

    • Posts

      1,846


Popular Content

Showing content with the highest reputation on 07 مار, 2016 in all areas

  1. السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله .. بصراحة أعجز عن البداية في هذا الموضوع نظراً لكثرة المعلومات في هذا الموضوع وتشعب الموضوع بشكل كبير ، ويرجع هذا التشعب إلى أهمية الموضوع لأن العمل بالمصفوفات يجعل الأكواد تكون أسرع بكثير من التعامل بالأكواد العادية خصوصاً مع البيانات الكثيرة .. الموضوع سيكون مستمر بإذن الله .. فأنا أؤمن بالحكمة التي تقول : قليل دائم خير من كثير منقطع .. سنبدأ في تناول الموضوع جزء جزء لكي نستطيع أن نهضم سوياً الموضوع ، ونستفيد من هذا الموضوع أقصى استفادة ممكنة نبطل رغي ونبدأ في المهم يعني ايه مصفوفة Array ؟ قبل ما نتعرف على المصفوفة .. عرفنا في دورة افتح الباب وادخل لعالم البرمجة "المتغير Variable" وقلنا إن المتغير وظيفته إنه بيخزن قيمة (سواء القيمة دي نص أو رقم أو تاريخ أو أي نوع من أنواع البيانات) .. بس المتغير بيخزن قيمة واحدة مثال : لو عايز أخزن القيمة النصية Officena Forums في متغير كنا بنعمل ايه ..؟! بنعلن عن المتغير من النوع النصي في سطر وفي السطر التالي بنقوم بتعيين قيمة للمتغير .. Sub StringVariable() Dim str As String str = "Officena Forums" End Sub طيب عشان نتأكد إن شغلنا مضبوط عايزين نعرف المتغير دا تم تخزين القيمة النصية فيه ولا لا .. ممكن نستخدم طريقة من اتنين : الطريقة الأولى باستخدام MsgBox لإظهار رسالة للمستخدم بقيمة المتغير .. MsgBox str الطريقة التانية ودي مهمة جداً لأننا هنستخدمها أثناء شرح المصفوفات لمتابعة تنفيذ أسطر الكود .. الطريقة باستخدام Debug.Print Debug.Print str طيب الطريقة دي هتظهر لنا إزاي : هتظهر النتائج في نافذة اسمها النافذة الفورية Immediate Window (طيب دي أجيبها منين وإزاي؟!) روح للقائمة الموجودة في محرر الأكواد وانقر على View هتلاقي Immediate Window أو باختصار من لوحة المفاتيح اضغط على Ctrl + G .. هتظهر النافذة الفورية في أسفل محرر الأكواد .. جرب الكود بالشكل الكامل بهذا الشكل Sub StringVariable() Dim str As String str = "Officena Forums" MsgBox str Debug.Print str End Sub طيب لما نحب ننفذ الكود يا ريت لا يتم التنفيذ مرة واحدة من خلال الأمر Run .... عايز التنفيذ يتم واحدة واحدة وسطر بسطر عشان تتعلموا إزاي تتابعوا عمل الكود .. عشان ننفذ الكود سطر بسطر ونتابع عايزين نظهر نافذة تانية كمان اسمها Local Window وبردو من نفس القائمة View وحاول تظبط النافذتين بحيث يكونوا بجانب بعضهم البعض كما في الصورة بحيث تتابع التنفيذ خلينا عمليين ونطبق أول بأول : روح لمحرر الأكود وأدرج موديول وانسخ الكود وأظهر نافذة Local Window والنافذة الفورية وضع مؤشر الماوس داخل الكود في اي سطر واستعد للانطلاق (على السادة المبرمجين ربط الأحزمة وشحذ الهمة والتركيز) اضغط F8 من لوحة المفاتيح هتلاقي أول سطر Sub StringVariable اتلون باللون الأصفر .. هنا بيتم الإعلان عن المتغيرات (بص في نافذة اللوكال) هتلاقي اسم المتغير str في عمود اسمه Expression ، وقيمته "" في عمود اسمه Value (طبعاً لسه فراغ لأن لسه مخزناش فيه حاجة) ، ونوعه String في عمود Type .. يعني ببساطة عرفنا تاريخ حياته في اللحظة دي ..عرفنا اسمه وقيمته ونوعه (الكلام دا رغم إنه ملوش علاقة بموضوع المصفوفات لكنه مهم جداً عشان نفهم إزاي نتعامل مع محرر الأكواد بشكل احترافي ونعلم نفسنا إزاي الكود بيتم تنفيذه) نضغط F8 تاني (هنا مفيش حاجة حصلت) السطر الأصفر انتقل للسطر ده str = "Officena Forums" ولكن محصلش أي تغيير في نافذة اللوكال ..دا لأن التغيير بيحصل لما بخرج من السطر الأصفر .. اضغط F8 للمرة التالتة وشوف نافذة اللوكال ولاحظ قيمة المتغير .. اتغيرت القيمة من فراغ إلى النص Officena Forums اضغط F8 للمرة الرابعة هتظهر لك رسالة فيها قيمة النص اضغط F8 للمرة الخامسة هيظهر قيمة المتغير في النافذة الفورية اضغط F8 للمرة السادسة والأخيرة على سطر End Sub لإنهاء الإجراء الفرعي بكدا نكون عرفنا إزاي هنتعامل مع تنفيذ الكود أثناء الدورة ... طولت في النقطة اللي فاتت شويتين بس كان لازم منها عشان ننتقل إلى مرحلة الاحترافية في التعامل مع الأكواد *************** طيب سؤال ايه علاقة المتغير بالمصفوفة؟ الإجابة إن المصفوفة متغير بس مش بيخزن قيمة واحدة (دا بيخزن مجموعة من المتغيرات دفعة واحدة) مثال عملي لفهم المصفوفة بشكل أعمق ::: نفترض أن لدينا 5 طلاب وليهم درجات ..نروح لورقة العمل ونكتب 5 أسماء بدرجاتهم كما بالشكل التالي نروح لمحرر الأكودا وننفذ الكود التالي ..الكود مش محتاج شرح الكود بسيط جداً Sub StudentMarks() With ThisWorkbook.Worksheets("Sheet1") 'الإعلان عن متغير لكل طالب Dim Student1 As Integer Dim Student2 As Integer Dim Student3 As Integer Dim Student4 As Integer Dim Student5 As Integer 'تعيين قيم المتغيرات من الخلايا المشار إليها Student1 = .Range("B1").Offset(1) Student2 = .Range("B1").Offset(2) Student3 = .Range("B1").Offset(3) Student4 = .Range("B1").Offset(4) Student5 = .Range("B1").Offset(5) 'طباعة الدرجات في النافذة الفورية Debug.Print "درجات الطلاب" Debug.Print Student1 Debug.Print Student2 Debug.Print Student3 Debug.Print Student4 Debug.Print Student5 End With End Sub أول سطر في الكود عشان نتعامل مع المصنف الحالي الذي يحتوي الكود .. والتعامل هيكون مع ورقة العمل Sheet1 ... الجزء الأول بيتم الإعلان عن المتغيرات لدرجات الطلاب من النوع Integer أي عدد صحيح (طبعاً دا مجرد مثال .. لأن الدرجات من المفترض إنها تكون Double لأن أكيد بيكون فيه كسور)>>المهم الجزء التاني بيتم تعيين قيم للمتغيرات (الدرجات) انطلاقاً من الخلية B1 ... بإزاحة بمقدار صف واحد لأسفل هيجيب قيمة الخلية B1 ... بإزاحة بمقدار صفين هيجيب الخلية B3 وهكذا الجزء التالت هيطبع درجات الطلاب في النافذة الفورية لتكون النافذة الفورية بهذا الشكل طيب المثال اللي فات 5 طلاب ..طيب لو عندي 100 طالب .. 500 طالب .. 1000 طالب .. 10000 طالب (هل سيكون التعامل مع طالب طالب ..؟؟ دا أكيد انتحار ) من هنا تأتي أهمية المصفوفة لتخزين جميع القيم في متغير واحد فقط .. يعني المصفوفة هتخليني أخزن القيم (درجات الطلاب) في متغير واحد فقط Sub StudentMarksArr() With ThisWorkbook.Worksheets("Sheet1") 'الإعلان عن متغير من النوع مصفوفة وأبعاد المصفوفة 5 عناصر 'لأن عدد الطلاب 5 طلاب والمطلوب تخزين درجاتهم في المصوفة Dim Students(1 To 5) As Integer 'قراءة درجات الطلاب من ورقة العمل Dim I As Integer For I = 1 To 5 Students(I) = .Range("B1").Offset(I) Next I 'طباعة الدرجات من المصفوفة في النافذة الفورية Debug.Print "درجات الطلاب" For I = LBound(Students) To UBound(Students) Debug.Print Students(I) Next I End With End Sub تم الإعلان عن اسم المتغير Students وطالما وضعنا أقواس بعد المتغير ..محرر الأكواد بيفهم إن دي مصفوفة .. طيب ايه الأرقام اللي ما بين الأقواس 1 إلى 5 دا اسم البعد الأول للمصفوفة (لأن المصفوفة دي عبارة عن عمود واحد اللي هو عمود الدرجات ودي بيسموها مصفوفة ذات بعد واحد (أحادية الأبعاد) وإن شاء الله هنتكلم عنها بالتفصيل نضع المؤشر داخل الكود ونضغط F8 ونبص في اللوكال ... ركز يا مان وشوف المتغير اللي اسمه Students في نافذة اللوكال هتلاقي علامة زائد انقر عليها زي ما إحنا شايفين اللوكال قالت كل حاجة ..قالت الأبعاد وقالت لنا على عناصر المصفوفة ورقم الفهرس لكل عنصر (الرقم اللي بين أقواس بعد اسم المصفوفة دي رقم الفهرس ) طبعاً لسه الكود في بدايتة فالقيم كلها ما زالت صفر .. ابدأ في التنقل باستخدام F8 كما تعلمنا وارجع بعد شوية .... لاحظت في الحلقة التكرارية اللي بدأت من 1 إلى 5 إن القيم الموجودة بدأت تتغير من أصفار إلى قيم (درجات الطلاب) لمزيد حول الحلقة التكرارية للمصفوفة راجع الموضوع التالي من هنا نيجي لآخر جزئية وهي طباعة الدرجات في النافذة الفورية ... هنا تم استخدام الحلقات التكرارية من بداية المصفوفة باستخدام كلمة LBound يليها اسم المصفوفة ، إلى نهاية المصفوفة باستخدام كلمة UBound يليها اسم المصفوفة .. ببساطة الكلمتين دول بيجيبوا الحد الأدنى للمصفوفة (1 كما في المثال) والحد الأعلى للمصفوفة (5 كما في المثال) قم بالضغط على F8 واحدة واحدة وشوف التغيرات اللي بتحصل في نافذة اللوكال والنافذة الفورية عشان تقدر تستوعب عمل الكود بشكل جيد إلى هنا حانت لحظة النوم وبدأ النوم يداعب جفوني ، ألتقي بكم على خير إن شاء الله وإلى لقاء آخر وموضوع متجدد بإذن الله دمتم على طاعة الله والسلام عليكم ورحمة الله وبركاته
    9 points
  2. السلام عليكم ورحمة الله وبركاته إخواني الكرام ... ارتأيت أن موضوع المصفوفات بات من الأهمية بمكان بحيث لا يجب أن ننساه لما له من أهمية كبيرة في التعامل مع الأكواد بسرعة كبيرة جداً وخصوصاً في حالة التعامل مع كم هائل من البيانات .. فقررت أن أشارككم بما تقع عليه يدي من أكواد فيما يخص المصفوفات لنتعلم ونرتقي سوياً .. سأتناول كود بسيط بالتفصيل لنعرف ما هية المصفوفات وكيفية التعامل معها بشكل جيد الكود عبارة عن عمل حلقة تكرارية لعناصر المصفوفة من أول عنصر لآخر عنصر .. وإظهار العناصر في رسالة أو وضعها في نطاق أو التعامل معها كما تريد نبدأ بالكود بالكامل ثم نتناوله بالتفصيل Sub LoopInArray() Dim myArray As Variant Dim X As Integer myArray = Array("Yasser", "Khalil", "Officena", "Forum") For X = LBound(myArray) To UBound(myArray) MsgBox (myArray(X)) Next X End Sub السطر الأول هو بداية الإجراء الفرعي ويبدأ بكلمة Sub كما تعودنا يليه اسم الإجراء الفرعي ويفضل تسميته باسم يعبر عن الهدف من الكود ...قمت بتسميته LoopInArray حيث أننا سنتعامل بالحلقات التكرارية داخل عناصر المصفوفة .. وطبعاً لكل شيء بدأته لازم تقفله ..وقفلة الـ Sub بتكون بكلمة End Sub في نهاية الكود بالطبع السطر الثاني الإعلان عن متغير myArray وهو متغير للمصفوفة التي سنتعامل معها وقمت بتسميتها باسم مناسب وليس أي اسم (أفضل دائماً أن تكون أسماء المتغيرات معبرة عن المتغير والهدف منه ونوعه ..) السطر الثالث هو إعلان عن متغير من النوع Integer ووظيفة هذا المتغير أنه بمثابة عداد ..إذ أن من يعرف الحلقات التكرارية يعرف أنه لعمل حلقة تكرارية يستلزم أن يكون هناك عداد لهذه الحلقة التكرارية .. وقيمة المتغير X ستتغير مع كل حلقة .. أقصد أنه في أول لفة ستكون قيمة المتغير تساوي رقم البداية (فإذا كان رقم البداية 1 فإن المتغير يساوي 1) وفي اللفة الثانية تزداد قيمة المتغير بمقدار 1 ليصبح على سبيل المثال 2 وفي اللفة الثالثة يساوي 3 وفي اللفة الرابعة ..كمل إنت !! انتهينا من الأسطر التقليدية (تسمية الإجراء والإعلان عن المتغيرات) ... نتوقف قليلاً لللتجربة !! ماذا سنجرب يا ترى ؟ هل هناك ما يستدعي منا أن نجربه ونحن ما زلنا في البداية ولم نكتب أسطر فعلية للكود .. نعم لابد أن نتعلم شيئاً جديداً ومفيداً عند التعامل مع الأكواد ...... تطبيق : انسخ الكود السابق في موديول جديد ثم ضع الماوس داخل الإجراء الفرعي .. ومن قائمة View في محرر الأكواد اختر الأمر Local Window إنها نافذة ستجعل منك محترفاً في فهم الأكواد (صدقوني ستذهلون منها بشكل كبير جداً) ..إنها بمثابة نافذة لك لتدرك كيف يتم تنفيذ أسطر الكود سطر سطر انتبهوا لهذه النافذة بشكل كبير ... كيف سيتم التعامل مع هذه النافذة المدهشة ؟ الأمر في غاية اليسر والسهولة والبساطة .. ستستخدم من لوحة المفاتيح F8 وهو يمكنك من متابعة الكود سطر بسطر .. كفانا كلام نظري وننتقل للتطبيق .. ضع الماوس داخل الإجراء الفرعي (الكود) ثم اضغط F8 مرة واحدة فقط .. وانظر للنافذة التي كانت فارغة منذ قليل لقد أصبحت ثرية .. نعم ثرية .. بضغطة واحدة ستتمكن الآن من تحليل المتغيرات .. لقد تم وضع سطر باللون الأصفر على أول سطر بالكود كما تم وضع المتغيرات في النافذة بهذا الشكل في الناحية اليسار من النافذة توجد أسماء المتغيرات التي تم الإعلان عنها وفي العمود الأوسط قيمة المتغير ..فقيمة المتغير الأول Empty ما زالت المصفوفة فارغة لم يتم إضافة أي عنصر لها ، وقيمة المتغير الثاني لأنها من النوع Interger فتحمل القيمة صفر لأننا لم نضع قيمة لها بعد وفي العمود الثالث نوع المتغير فالمتغير الأول من النوع Variant وهذا النوع غالباً ما نستخدمه مع المصفوفة لأن المصفوفة مرنة ربما تحمل نصوص وربما أرقام وربما حتى نطاقات (موضوع يطول شرحه) إلى الخطوة الثانية والتي هي نفس الخطوة الأولى (حد يفكرني !!) محدش مركز !! ... الخطوة التانية اضغط F8 مرة تانية .. ماذا حدث ؟ لقد تجاوز السطر الأصفر أسطر الإعلان عن المتغيرات .. نعم لأنها أسطر غير قابلة للتنفيذ إنما تظهر المعلومات المرتبطة بهذه المتغيرات مع أول ضغطة على F8 بعد السطر الأول في الكود .. انتقل السطر الأصفر ليظلل السطر التالي .. ولم يحدث أي تغيير في نافذة الـ Local Window myArray = Array("Yasser", "Khalil", "Officena", "Forum") هل التنفيذ مرتبط بالسطر الأصفر ؟ نعم يتم تنفيذ السطر الملون بالأصفر بعد الخروج من السطر الأصفر وليس عند تظليل السطر الأصفر الخطوة الثالثة .. ماذا تتوقع أن يحدث بعد أن نضغط F8 للمرة الثالثة؟؟؟ فكر ثواني عشان تفهم اللعبة .. سيتم تنفيذ السطر الأصفر السطر الحالي عبارة عن تعيين قيم أو وضع عناصر للمصفوفة .. لدينا بعض الأسماء (وبما أن الأسماء نصوص فتم وضعها بين أقواس تنصيص) وهذه الأسماء سيتم وضعها داخل المتغير الذي قررنا أنه سيكون للمصفوفة انتبه انتبه ..لم أطلب منك أن تبدأ الخطوة الثالثة بعد ..!! فقط انظر لنافذة الـ Local Window على المتغير myArray وشوف القيمة هتلاقيها Empty أي أن المصفوفة فارغة (وكما بص على يسار اسم المتغير ..هل يوجد علامة زائد بجانب اسم المتغير myArray ؟؟ الإجابة لا يوجد) ابدأ تنفيذ الخطوة الثالثة ألا وهي نفس الخطوة الأولى ونفس الخطوة الثانية ..حد يفكرني !! محدش مركز .. اضغط F8 بردو (أنا مش عايز أتعبك أنا عايز تشوف وتتعلم وبعديها خلي دماغك يتكلم) ضغطت يا وائل ولا لسه على F8 ؟؟؟ تمام تمام الله ينور عليك ايه اللي حصل يا حوسو .. لما نحب نعرف ايه اللي حصل هنبص على الكود وعلى النافذة .. نبص الأول على الكود هنلاقي إنه تم الانتقال للسطر التالي وأصبح السطر التالي مظلل باللون الأصفر .. طيب الأهم إننا نبص على النافذة Local ونشوف المتغير myArray هنلاقي حاجة غريبة بتحصل .. حاجة بسيطة لكن مهمة المصفوفة اللي كانت فارغة Empty من شوية ومفيش علامة زائد جنبها .. أصبح فيه علامة زائد على يسار اسم المتغير ولما نبص في عمود القيمة هنلاقي كلمة Empty أصبحت مش موجودة .. دا لأنها بعد الانتقال من السطر اللي فات بقت المصفوفة فيها قيم .. نبص للعمود الثالث هنلاقي بردو فيه شيء اتغير ..نوع المتغير لم يتغير زي ما هو Variant بس فيه شيء إضافي .. هتلاقي ما بين قوسين بداية المصفوفة ونهاية المصفوفة بمعنى آخر المصفوفة اللي بنتعامل معاها دلوقتي فيها 4 قيم .. ولما نبص نلاقي الأرقام من 0 إلى 3 (افتراضي المصفوفة بتبدأ من الرقم 0 وليس الرقم 1 ) الأرقام دي عبارة عن فهرس للمصفوفة (زي فهرس كتاب) يعني مثلاً أول قيمة في المصفوفة اللي هي Yasser لها الرقم 0 في الفهرس .. والقيمة Khalil ليها رقم 1 وهكذا لنهاية القيم كل عنصر داخل المصفوفة ليها رقم في الفهرس .. عايز تتأكد من كلامي تعال على نفسك شوية ونتعب ونضغط علامة الزائد اللي على يسار اسم المتغير (خلي الصورة تتكلم شوية عشان أنا تعبت) زي ما إحنا شايفين الفهرس من 0 1 2 3 وكل عنصر له رقم في الفهرس وله قيمة يعني دلوقتي لو عايز أعرف تاني قيمة في المصفوفة هعمل ايه؟ ببساطة ممكن استخدم كلمة Msgbox ثم اسم المصفوفة ثم افتح قوس ثم أضع رقم القيمة المطلوبة ثم اقفل القوس MsgBox myArray(1) واحد يقولي إنت مش بتجيب تاني عنصر في المصفوفة ..طيب ليه كتبت واحد مش 2 (أقوله لأن المصفوفة بتبدأ من الصفر وليس من الواحد ..) فالواحد بمثابة 2 (عد من البداية ::: رقم صفر هو أول عنصر في المصفوفة .. رقم 1 هو ثاني عنصر في المصفوفة وهكذا) المهم عشان أنا بدأت أتوه من نفسي ننتقل للحلقة التكرارية ودي بيكون ليها عداد زي ما قلنا والعداد هنا X فبنقول For X وبعديها علامة يساوي ... بعد يساوي بداية الحلقة التكرارية يليها كلمة To ثم نهاية الحلقة التكرارية بداية الحلقة هتكون أول رقم فهرس في المصفوفة اللي هو في مثالنا يساوي صفر ، ونهاية الحلقة التكرارية هو آخر رقم في الفهرس اللي هو 3 وبدل ما نكتب من 0 إلى 3 (استخدمنا دالة بتجيب أول رقم في المصفوفة واسمها LBound ودي اختصار لكلمة Lower Bound أي الحد السفلي أي أول رقم في الفهرس ... وأيضاً بالمثل استخدمنا دالة عشان تجيب آخر رقم في المصفوفة والدالة هي UBound ودي اختصار لكلمة Upper Bound أي آخر رقم في الفهرس) طيب العداد لازمته ايه ؟؟ قلنا بيحمل القيمة الحالية ..فأول قيمة عندي هتكون صفر بالتالي قيمة X هتساوي صفر .. إحنا دلوقتي واقفين في السطر الملون باللون الأصفر مع بداية الحلقة التكرارية لو وقفنا بالماوس على كلمة X سيظهر تليح صغير في مستطيل أصفر صغير به قيمة المتغير ( في الصورة قيمة X تساوي صفر) وهو أول رقم في الحلقة التكرارية لأن رقم البداية صفر (والمتغير X يحمل قيمة أول رقم في بداية الحلقة) المهم اضغط F8 لتنتقل للسطر التالي وعايز تروح بالماوس وتقف على الكلمة دي myArray(X) هتلاقي مربع أصفر فيه القيمة Yasser وروح للـ X وقف عليها ستجد القيمة صفر أي أن المصفوفة المسماة myArray ثم نفتح قوس ونضع رقم الفهرس المطلوب ورقم الفهرس هنا هو صفر ..يحمل القيمة Yasser اضغط F8 لتظهر لك رسالة بقيمة أول عنصر في المصفوفة .. اضغط F8 مرة أخرى لتنتقل للفة الثانية في الحلقة .. ولاحظ أن الانتقال بعد ذلك سيكون ما بين السطرين MsgBox (myArray(X)) Next X القيمة X تتغير ويتغير معها القيمة التي تظهر في الرسالة .. أكمل الضغط على F8 لترى نتائج الكود بنفسك ... وعينك دائماً على نافذة Local لترى قيمة المتغير X وهي تتغير مع كل لفة وطبعاً عند وصول قيمة X لـ 3 تنتهي الحلقة التكرارية لأن نهاية الحلقة هو الرقم 3 أتمنى أن يكون الشرح واضح ومفيد للجميع مع تحياتي أخوكم ياسر خليل أبو البراء
    4 points
  3. أخي الكريم علي لطفي بعد إذن أخي الحبيب الغالي خالد الرشيدي قم بتحديد الخلية A1 ومن التبويب Data ثم Data Validation اختر الأمر List لعمل قائمة ثم اكتب Male,Female ثم قم بعمل كليك يمين على اسم ورقة العمل واختر الأمر View Code وضع الكود التالي .. Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.CountLarge > 1 Then Exit Sub If Target.Address = "$A$1" Then If Target.Value = "Male" Then Target.Offset(, 1).Value = 1 ElseIf Target.Value = "Female" Then Target.Offset(, 1).Value = 2 End If End If End Sub قم بحفظ المصنف بامتداد xlsm .. جرب تختار أحد الخيارين Male أو Female من الخلية A1 .. ستتغير قيمة الخلية B1 (الخلية المجاورة) إلى رقم 1 في حالة اختيارك للخيار Male وإلى رقم 2 في حالة اختيارك للخيار Female أرجو أن يكون المطلوب .. تقبل تحياتي
    3 points
  4. بسم الله الرحمن الرحيم اراد احد الاخوة كود لازالة بيانات من خلايا متفرقة داخل نطاق معين فخطرت ببالي هذه الفكرة وهي حذف البيانات بمعلومية لون الخليه فوضعت لكم مثال بسيط لعله يفيدكم Sub Yasser() Dim Rng As Range Application.ScreenUpdating = False For Each Rng In Range("a3:g31") If Rng.Interior.Color = Range("h1").Interior.Color Then Rng.ClearContents End If Next Rng Application.ScreenUpdating = True End Sub مع تحياتي ياسر العربي مسح بيانات بمعلومية اللون.rar
    2 points
  5. أخي الكريم جمال الدين يرجى تغيير اسم الظهور للغة العربية فضلاً لا أمراً جرب الكود التالي لحذف كل أوراق العمل ما عدا الورقة الأولى (حركة الحسابات) والورقة الثانية (Statement) Sub DeleteAllSheetsExceptTwo() Dim Sh As Worksheet Application.DisplayAlerts = False For Each Sh In ThisWorkbook.Sheets If Sh.Name <> Sheet1.Name And Sh.Name <> Sheet2.Name Then Sh.Delete End If Next Sh Application.DisplayAlerts = True End Sub تقبل تحياتي
    2 points
  6. أخي الحبيب رجب جاويش وهذا الكود هدية مني Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = [B4].Address Then Application.EnableEvents = False Dim vSheet For Each vSheet In Array("Sheet1", "Sheet2", "Sheet3") Sheets(vSheet).Range("B4").Value2 = Target.Value Next vSheet Application.EnableEvents = True End If End Sub تقبل تحياتي
    2 points
  7. أخي الكريم ابراهيم الديب يرجى ضبط اسم الظهور الخاص بك حيث أن اسم ابراهيم ملتصق بالديب ..فمش عايزين الديب ياكل ابراهيم جرب الكود التالي ...يوضع في حدث ورقة العمل التي تحتوي على الارتباطات التشعبية لأوراق العمل الأخرى 'Steps: '[Main][Sheet1][Sheet2][Sheet3] قم بإنشاء أربعة أوراق عمل 'في ورقة العمل الرئيسية قم بعمل ارتباط تشعبي لكل أوراق العمل الأخرى '[Main] قم بإخفاء أوراق العمل كلها ما عدا ورقة العمل الرئيسية المسماة 'يوضع الكود في حدث ورقة العمل الرئيسية ويقوم الكود بإظهار الشيت الهدف '--------------------------------------------------------------------- Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Dim strSheet As String If InStr(Target.Parent, "!") > 0 Then strSheet = Left(Target.Parent, InStr(1, Target.Parent, "!") - 1) Else strSheet = Target.Parent End If Sheets(strSheet).Visible = True Sheets(strSheet).Select End Sub Private Sub Worksheet_Activate() Dim WS As Excel.Worksheet For Each WS In ThisWorkbook.Worksheets WS.Visible = (WS.Name = Me.Name) Next End Sub تقبل تحياتي
    2 points
  8. وعليكم السلام استخدم التنسيق التالي للحقل: #,###.00 جعفر
    2 points
  9. السلام عليكم استاذى / ابو البراء .. جزاك الله خيراً .. واستأذنك استاذى فى عرض فكرة اخرى بإستخدام المعادلات بإفتراض ان مرجع القائمه المنسدلة هى الخلايا A3:A5 وان خليه القائمه هى E3 يتم وضع المعادلة التاليه فى الخليه المراد بها الرقم =SUMPRODUCT(--(E3=A3:A5);ROW(A3:A5)-2) Book1ffff.rar
    2 points
  10. اخواني الاكارم البرنامج التالي يخص محلات بيع النظارات و اطباء العينية و هو مأجور و ليس مجاني الأجرة ( دعوة صالحة لي و لمعلمي ( أبو آدم )) :rol: اترككم مع المرفق و انا بانتظار الردود ( في حال وجود خطأ لا سمح الله ) -------------------------------------------------------------------------------------------------------------------------- اعتذر لجميع الاخوة يرجى اضافة المرفق التالي مع المرفق الأول وهو وحدة نمطية لمنع التحرك بين السجلات عن طريق دولاب الفارة فقط استخرج المف المرفق وضعه في فولدر البرنامج MyCustomerData.rar std.rar
    1 point
  11. السلام عليكم ورحمة الله وبركاته الحمد لله والصلاة والسلام على رسول الله وعلى اله واصحابه اجمعين. ========================================================================================================================= اليكم ملف اكسيل حسابات عامه من قيود اليومية وحتى الميزانيه لشركات المقاولات -مع انى لم اعمل فى نشاط المقاولات -بشكل خاص وجميع الانشطة بشكل عام مع تعديل دليل الحسابات . وهذا الملف ربما سيكون الاخير لى فى 2014 نظرا لضغوط العمل . واطلب من الجميع الا ينسانى فى دعاؤه . باسوورد محرر الاكواد 12345 وايضا باسورد الحمايه للمعادلات . اصدار الاوفيس من 2007 وحتى اخر اصدار . ========================================================================================================================= ماعليك الا ادخال قيد اليومية فقط والضغط على زر الترحيل ========================================================================================================================= استخدمت فى البرنامج الاكواد والمعادلات والpivottable واشكال بيانيه فى التنسيقات الشرطيه وادمجت معادلات فى الاشكال البيانيه ========================================================================================================================= لاتنسونا بصالح دعاؤكم ملف المقاولات الاصدار الاول تجريبى.rar
    1 point
  12. أخي الكريم جملين .. قم بالإطلاع على الفيديو التالي لتعرف ما هي الأسماء البرمجية .. وما زلنا ننتظر أن نرى اسمك ساطعاً باللغة العربية وإن شاء الله لن تنساه لأنك في أوفيسنا في بيتك الثاني ولست في أي منتدى آخر تقبل تحياتي
    1 point
  13. أخي الكريم برجاء تغيير اسم الظهور للغة العربية فضلاً لا أمراً يرجى الإطلاع على موضوع التوجيهات في الموضوعات المثبتة في المنتدى لمعرفة كيفية التعامل مع المنتدى بشكل أفضل ضع عنوان مناسب لمضمون الموضوع وليس عنوان عشوائي ليسهل على الباحث فيما بعد الوصول لمبتغاه بسهولة تقبل تحياتي
    1 point
  14. اشكر مرورك اخي الاستاذ القدير ابو البراء ومالدينا الا قطره من بحركم زادكم الله علما ونورا الاكسس قصة حب وغرام !! فصعبه شويه استاذنا ! تحياتي
    1 point
  15. السلام عليكم ماشاء الله ربنا يبارك فيك ماشاء الله ربنا يزيدك من علمه ماشاء الله ربنا يتم عليك نعمته السلام عليكم
    1 point
  16. لو يتابع المتابع تعليقاتك ودروسك لأصبح عضو في اتحاد مطوري لغات البرمجة جزاك ربنا من خيراته واسبغ عليك من نعماته درس جميل وسهل وميسور لا تحرمنا من جمايلك كما يقول احد المتوترين "المغردين في تويتر" افضل الصدقة ان تتعلم علما ثم تعلمه لأخيك
    1 point
  17. السلام عليكم المعادلة دى عرفنا عليها الأخ ياسر أبو البراء جزاه الله خيرا وفى مشاركتك السابقة ونفذتها على الملف عندك عسى أن يكون المطلوب Copy of Xl0000128.rar
    1 point
  18. ابدا مافي مشكلة ولا اشكال جعفر
    1 point
  19. اذا انت مرتاح من "شكل" التنسيق ، فتوكل على الله لأن التنسيق هو عبارة عن: إعطاء شكل النتيجة ، بالطريقة التي نريدها ولأن التنسيق "شكل" فقط ، لهذا السبب ، وعند التعامل مع بيانات هذا الحقل ، لا نهتم بالتنسيق يعني في الاستعلام لما تريد ان تعمل تصفية للحقل aaaa اعلاه ، فتكتب الرقم 12345 مثلا (بدون تنسيق) ، ولا تكتب .12,345$ جعفر
    1 point
  20. وعليكم السلام ورحمة الله وبركاته أخي الكريم سيف الدين أبو باسم جرب الملف المرفق (تم تعديل المعادلات في الفئة أ) رغم أنني ما زلت لم أفهم المطلوب بشكل واضح .. جرب المرفق وأخبرنا بالنتيجة : هل ضبطت معك أم لا؟ برنامج توزيع مبلغ بنسب.rar
    1 point
  21. السلام عليكم وهل يمكن ذلك في حقل الجدول اذا كان ادخال البيانات من خلال نموذج؟اضف مرفقات اخري السلام عليكم الاخ جعفر يبدو اننا سوف نصل الى الحل بالشكل الصحيح7 هل الذي الذي موجود في الصوره الاولى عمل صحيح؟ والبيانات تظهر في الصورة الثانية
    1 point
  22. مشكور أخي العزيز نايف على مرورك العطر وكلماتك الطيبة ربنا ييسر الأمور إن شاء الله .. سنحاول أن نعطي فرصة للأعضاء لدراسة جزء جزء .. حتى يتم هضم الموضوع بشكل جيد ... تقبل تحياتي
    1 point
  23. السلام عليكم ورجمة الله وبركاته اعضاء اوفيسنا هل هناك كود يمنع تكرار سجلين بنفس الاسم بمعنى لدي حقل باسم ( رقم ملف ) وحقل ثاني باسم ( التخصص ) لا ارغب ان يتكرر رقم الملف بنفس التخصص التي سبق سجل به هل هناك امكانية بحل هذا Database4.zip وشكراً لكم
    1 point
  24. أخي الغالي رجب جاويش أنتم من علمتمونا الإبداع ..فإذا كنت قمراً فأنت النجم في سماء المنتدى (القمر غير منير بذاته إنما يعكس أشعة الشمس ..بينما النجم مضيئ بذاته) بارك الله فيك وجزاك الله كل خير ... تقبل وافر تقديري واحترامي
    1 point
  25. وعليكم السلام أخي المتميز خالد الرشيدي فكرة رائعة وفي منتهى البساطة والجمال ..تسلم الأيادي وربنا ما يحرمنا من تواجدك معنا تقبل وافر تقديري واحترامي
    1 point
  26. أخى الحبيب / ياسر خليل جزاك الله خيرا على هذا الموضوع القيم سر على بركة الله ونحن جميعا فى انتظار المزيد لنتعلم من ابداعاتكم تقبل تحياتى وتقديرى
    1 point
  27. وعليكم السلام في نموذج ادخال البيانات ، وتكون قد ادخلت رقم ID ، ضع الكود التالي على حدث "قبل التحديث" للحقل Speciality : Private Sub specialty_BeforeUpdate(Cancel As Integer) a = DCount("*", "Waiting list", "[id]=" & Me.id & " And [specialty]='" & Me.specialty & "'") If a > 0 Then MsgBox "عفوا ، لا يمكن المواصلة ، رقم ملف وحقل التخصص متكرر" Cancel = true Me.Undo End If End Sub جعفر
    1 point
  28. اخى الكريم ماذا تقصد من سؤالك ،، وماذا تعنى جملة (( لأننى لا أجد أى تغيير )) على ما اعتقد انكم طلبتم ترقيم تلقائى داخل الفورم ومرفق صورة توضح ذلك وقد اضفت كود داخل الفورم وهو Private Sub UserForm_Activate() Lr = Sheets("المبيعات").Cells(Rows.Count, 5).End(xlUp).Row Me.Code_Fatora = Application.WorksheetFunction.Max(Sheets("المبيعات").Range("B6:B" & Lr)) + 1 End Sub
    1 point
  29. أخي الحبيب محمود الشريف أخي الغالي محي الدين أبو البشر أخي الفاضل صلاح المصري أخي العزيز عبد العزيز البسكري أخي المتميز زيزو العجوز أخي المحبب لقلبي خالد الرشيدي صاحب الأعمال الخفية بارك الله فيكم جميعاً وجزيتم خيراً على تسجيعكم الدائم لي .. لا تعرفون مدى سعادتي بتشجيعكم لي وبتقديركم المميز لي رغم أن ما قدمته بسيط جداً مقارنةً بما تقدمونه جمعني الله وإياكم في مستقر رحمته يوم القيمة إنه ولي ذلك والقادر عليه إن شاء الله بالنسبة للحلقات الجديدةسوف يتم إدراجها في مشاركة في ترتيبها بشكل عادي وفي النهاية يمكن تجميع المشاركات كلها في موضوع واحد مستقل .. بارك الله فيكم وجزيتم خير الجزاء ، ودمتم على طاعة الله تقبلوا تحياتي
    1 point
  30. السلام عليكم استاذى القدير / ابو البراء جزاك الله خيراً .. حقاً نحن بحاجه الى مثل تلك الشروحات .. اعانك الله عليها واتمنى من حضرتك ان كل درس جديد يضاف اسفل سابقة مباشرة دون التعليقات حتى يسهل تجميع الدروس بالنسبه للقارئ خالص تقديرى واحترامى لشخصكم الكريم
    1 point
  31. اخى الحبيب السلام عليكم ورحمة الله ايقونة المنتدى وزهرتها الباسقة موضوعاتك عبارة عن مجموعة من الكنوز هنيئا لمن يعرفها حقيقة لا اجد تعبيرات مناسبة كى اصف بها اعجابى ولن اقول سوى بارك الله فيك
    1 point
  32. السّلام عليكم و رحمة الله و بركاته ألف شكر أخي الغالي و استاذي القدير " ياسر خليل أبو البراء " بارك الله فيك جزاك الله خيرًا و زادها بموازين حسناتك " إنَّ الله يحبّ إذا عمل أحدكم عملاً أنْ يتقنَه " و الحمد لله ..مواضيعك و أعمالك و تدخّلاتك و شروحاتك و حلولك كلّها باسم الله ما شاء الله أكثر من متقنة وفّقك الله لما يحبّه و يرضاه و نفع بك الاسلام و المسلمين موضوع شيّق يستحق المتابعة .. مميّز و ممتاز كعادة مواضيعك فائق إحتراماتي
    1 point
  33. اخى الكريم افضل ان تصمم النموذج وتعطى مثال عملى لكى تصل المعلومة بشكل اوضح وتقبل منى وافر الاحترام والتقدير
    1 point
  34. السلام عليكم ورحمة من لدنه وبركات بارك الله بجودك وجعله في ميزان حسناتك وسر الله خاطرك جزاك الله كل خير تقبل تحياتي هذه المرة قبلي
    1 point
  35. اليكم اخى الكريم بالمرفقات محاولة منى بالمعادلات على حسب فهمى للطلب وتقبل منى وافر الاحترام والتقدير استدعاء بيانات1.rar
    1 point
  36. أخى الحبيب و أستاذى القدير // ياسر خليل مبدع كعادتكم ، تسلم ايدك يا كبير أساسيات فى غاية الروعة والدقة بارك الله فيكم وزادكم الله من فضله ومن علمه وأسأل رب العرش العظيم أن يعينكم على تكملة هذه النوعيات من الدروس التى تمثل اساسيات لا غنى عنها فى هذا المجال وجزاكم الله خير الخير وتقبل منى وافر الاحترام والتقدير
    1 point
  37. أخي الحبيب صلاح أفضل دائماً في عملية التعلم التدرج في المعلومة ... حاول أن تتدرج في التدرب على الموضوع ثم بإذن الله ستجد كل شيء سهل ويسير .... تقبل تحياتي
    1 point
  38. بسم الله ما شاء الله عليك أخي الغالي رمهان متمكن ... ورائع ما تسيبك من الأكسس وخليك معانا في الإكسيل ..!!
    1 point
  39. أخي الكريم صلاح المصري ... إليك الملف المرفق التالي فيه .... تطبيق عملي لاستخدام المصفوفات في عمليات الترحيل من خلال تخزين عناوين النطاقات المراد ترحيلها في مصفوفة حمل الملف من هنا
    1 point
  40. أخى الفاضل تسلم ايديك وجزاك الله خيرا
    1 point
  41. يا سلام على التواضع بجد أجمل تحياتى وتحيات بلشاى كلها
    1 point
  42. ليس من عدل كمن أبدع أخي الغالي رجب جاويش فأنت صاحب الكود وكل ما فعلته أنني اختصرت المسافة .. يعني بدل ما آخد أتوبيس أخدت توك توك (وكل السبل تؤدي إلى بلشاي)
    1 point
  43. السلام عليكم أخى الحبيب ياسر أحسنت أخى الحبيب فكرتك أفضل بكتييييييييييير جدا طبعا تسلم ايديك
    1 point
  44. أخي الحبيب رجب جاويش بارك الله فيك وجزتي خيراً على حلولك الجميلة مجرد سؤال : لما قمت بكتابة أكواد في حدث كل ورقة عمل على حدا .. ما رأيك بإزالة كل الأكواد في حدث كل أوراق العمل ووضع الكود التالي في حدث المصنف Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Address = [B4].Address Then Application.EnableEvents = False Sheets("1").[B4] = Target.Value Sheets("2").[B4] = Target.Value Sheets("3").[B4] = Target.Value Application.EnableEvents = True End If End Sub تقبل وافر تقديري واحترامي
    1 point
  45. تفضل Private Sub SalNAme_Click() x = CurrentRecord Me.Parent.Form.RecordsetClone.FindFirst "[SalID]=" & Me.SalID Me.Parent.Form.Bookmark = Me.Parent.Form.RecordsetClone.Bookmark DoCmd.GoToRecord , , acGoTo, x End Sub تحياتي
    1 point
  46. السلام عليكم تم تجميع كل الأوراق في ملف واحد وتحويله إلى النظام الثنائي أرجو أن يكون هذا هو ما تريده تفضل الشامل.rar
    1 point
  47. أحبابي وإخواني الأعزاء لقد افتقدتكم جميعاً ويعلم الله لم يمنعني عنكم إلا الظروف الشديدة والحمد لله على كل حال . هذه هدية متواضعة لكم أحبابي . هام جداً : أرجو قبل التعامل مع الملف ضرورة الاطلاع على ورقة شرح الملف والتي أسميتها " HELP" ويمكن الانتقال إليها وسائر الأوراق من مفتاح " الانتقال إلى " والموجود بكل الأوراق ، وأرجو أن تكون الفكرة فيها ولو بعض الفائدة . وتقبلوا حبي وتقديري أبو عبدالله _________________________________.rar
    1 point
×
×
  • اضف...

Important Information