اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

  1. خالد الرشيدى

    خالد الرشيدى

    الخبراء


    • نقاط

      5

    • Posts

      889


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

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

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


    • نقاط

      5

    • Posts

      13165


  3. أ / محمد صالح

    أ / محمد صالح

    أوفيسنا


    • نقاط

      3

    • Posts

      4474


  4. عبد العزيز البسكري

    • نقاط

      2

    • Posts

      1352


Popular Content

Showing content with the highest reputation on 08/13/15 in all areas

  1. أعتقد أنه لا توجد امكانية في الأكسس لاعتماد نظامي تقويم في نفس الوقت والحل في ذلك يمكنك اختيار نوع التقويم في بداية تسجيل كل تاريخ ولا تقلق من تحويل التاريخ المكتوب بالميلادي إلى الهجري أو العكس باستخدام الأمر التالي Private Sub Text69_GotFocus() Application.SetOption "use hijri calendar", True End Sub Private Sub Text71_GotFocus() Application.SetOption "use hijri calendar", False End Sub في حدث عند امتلاك التركيز
    2 points
  2. الاستعلامات الاستعلامات هي أهم كائنات قواعد البيانات ، من خلال الاستعلام يمكنك عمل الكثير كما سنري بإذن الله و لدينا عشرة أنواع من الاستعلامات خمسة منها لها واجهة رسومية يمكن استخدامها لتكوين الاستعلام باستخدام الفأرة أو كتابة الاستعلام يدويا و الخمسة الأخري سنكتب فيها جمل ال SQL مباشرة و الأصل فى الاستعلامات أنها جميعا فى النهاية عبارة عن جمل و تعبيرات SQL و قبل أن نعرض الي تعريف الانواع العشرة ، تعالوا نتعرف الي ما تعنيه هذه الحروف الثلاثة SQL Structured Query Language السي كيو ال هو لغة التعامل مع قاعدة البيانات و ينقسم الي 3 أقسام لغة معالجة البيانات DML Data manipulation language لغة تعريف البيانات DDL Data Definition language لغة التحكم فى البيانات DCL Data Control language لغة معالجة الييانات ادراج بيانات تحديث بيانات حذف بيانات استرجاع بيانات لغة تعريف البيانات هي إنشاء قاعدة البيانات فى البداية كان يتم انشاء قاعدة البيانات باستخدام جمل SQL ثم بعد ظهور نظم ادارة قواعد البيانات مثل الاكسس أصبحت هذه العملية تتم من خلال واجهة رسومية سهلة الاستخدام قادرة علي انشاء و التحكم أيضا فى قواعد البيانات و هذه اللغة مسئولة عن : إنشاء جدول الغاء جدول تعديل جدول العلاقات لغة التحكم تتولي معالجة صلاحيات المستخدمين و هذه العمليات أيضا أصبحت تتم من خلال الواجهة الرسومية لنظم ادارة قواعد البيانات و نعود ثانية الي الأكسس : :d سنبدأ فى هذا الموضوع بتعريف أنواع الاستعلامات ، كتعريف عام قبل أن نعرض اليها بالتفصيل بإذن الله تعالي: 1. استعلامات الاختيار : select query 2. استعلامات الجداول المحورية : ؛Cross Tab Query 3. استعلام تحديث : Update Query 4. استعلام إضافة : Append Query 5. استعلام حذف : Delete Query 6. استعلام إنشاء جدول : Make Table Query 7. استعلامات التوحيد : Union Query 8. استعلامات التمرير : Pass-Trough Queries 9. استعلامات تعريف البيانات : Data definition queries 10. الاستعلامات الفرعية : Sub-query استعلامات الاختيار : select query تكوين مجموعة من السجلات المبنية علي جدول أو أكثر من بحيث تمثل كل الببيانات أو المجموعة من السحلات التي تحقق شروط معينة. بالاضافة الي امكانية التحكم فى ترتيب السجلات . – مثل جميع الطلاب الذين تتعدي درجاتهم 90 و بلدهم القاهرة و عدد أيام الغياب لديهم أقل من خمسة – مع كون الشروط الثلاثة نخص بيانات مسجلة فى ثلاث جداول مختلفة. و كما تكلمنا سابقا ، يمكن عمل ذلك باحدي طرق تصفية الجداول ، و لكن هنا سيكون لدينا كائن استعلام محفوظ ، يمكن استخدامه فى أي وقت . أيضا يمكن استخدامه لتجميع البيانات التي تشترك فى خواص معينة ، أي تلخيص البيانات و في هذه الحالة يطلق عليها استعلام تجميع استعلامات الجداول المحورية : ؛Cross Tab Query و هي أداة تحليلية تستخدم لتحليل البيانات بناء علي الخاصية المطلوبة ، فيتم فيها تجميع البيانات التي تجمعها خاصية معينة و تحليلها بالنسبة لخاصية أخري و تقديم الاحصائية المناظرة بمعني : لو لدينا بيانات عدد من الطلاب ، و تقديرهم و الجنسية ، و نريد احصائية تكون الصفوف فيها هي البلد و الأعمدة هي التقدير و محتويات الجدول عدد الطلاب الذين ينتمون الي كل بلد و كل تقدير أو مثلا بدلا من العدد نريد البيانات مجموع المصروفات المناظر ، أو أكبر تاريخ ميلاد لكل بلد و لكل تقدير فنحن نتحدث عن تطبيق مباشر للاستعلامات من نوع Cross Tab استعلام تحديث : Update Query تحديث كل أو بعض قيم بيانات فى جدول بشروط او بدون استعلام إضافة : Append Query اضافة سجلات الي جدول بشرط و بدون استعلام حذف : Delete Query حذف كل أو بعض السجلات من جدول بشرط أو بدون استعلام إنشاء جدول : Make Table Query إنشاء جدول جديد يحوي بيانات مختارة استعلامات السي كيو ال المحددة SQL Specific Queries استعلامات التوحيد : Union Query مثل استعلامات الاختيار ـ، و لكن تتميز عليها بامكانية توحيد أو ضم بينات أكثر من جدول فى نفس الحقل فمثلا لو لدينا جدول به أوامر البيع و آخر به أوامر التوريد ، و كلاهما به حقل رقم الامر و القيمة و أردنا أن ننشيء استعلام واحد يجمع بيانات الجدولين بحيث يكون به ثلاث حقول الاول يوضح نوع الامر و الثاني رقمه و الثالث القيمة و تكون القيمة موجبة فى حالة اوامر التوريد و سالبة فى حالة اوامر الصرف ، فنحن نتحدث عن تطبيق مباشر لاستعلامات التوحيد استعلامات التمرير : Pass-Trough Queries تستخدم لارسال أوامر بلغة اس كيو ال ، الي خادم قاعدة بيانات مباشرة من خلال ال ODBC ، و قد يكون لها مردود باعادة عرض سحلات و قد لا يكون لها ، و تفاصيل كتابة الاوامر فيها تعتمد علي قاعدة البيانات التي سنقوم بالتمرير اليها و نمر سريعا علي تعريف ال ODBC : Open Database Connectivity (ODBC): A standard method of sharing data between databases and programs. ODBC drivers use the standard Structured Query Language (SQL) to gain access to external data.) امكانية الاتصال بين قواعد البيانات ، و مشاركة البيانات بينها ، و تعتمد علي لغة الاستعلامات البنائية ( اس كيو ال) النمطية للتعامل مع البيانات استعلامات تعريف البيانات : Data definition queries و هي تستخدم لانشاء و حذف و تعديل الجداول و الفهارس الاستعلامات الفرعية : Sub-query و هو ليس نوع جديد ، و لكنه تطبيق لاستخدام استعلامات الاختيار ، و لكن هذه المرة لتعريف حقل أو معيار لحقل و طبعا هذا تعريف عام ، كبداية للحديث ، و يلي ذلك عرض الموضوع بالتفصيل بإذن الله
    1 point
  3. السلام عليكم ورحمة الله وبركاته إخواني وأحبابي في الله موضوع المصفوفات موضوع معقد ومتشعب للغاية ، لا أقصد أنه مستحيل ، ولكنه يحتاج إلى خبرة كبيرة لكي تستطيع أن تتعامل معها ، لذا ارتأيت أن أتعلم التعامل مع المصفوفات ، ولكن لكي أتعلم المصفوفات لابد أن أقدم المعلومة في أسلوب سلس وبسيط .. فهيا بنا سوياً نتعلم معاً ... أنا مثلي مثلكم في الموضوع أنا مجرد متعلم مبتديء فيما يخص هذا الفرع هنتكلم ببساطة ونحاول بقدر الإمكان إننا نبعد عن الأمور المعقدة ، فلنهضم سوياً البدايات ، وبمرور الوقت سنصل إلى الهدف الأكبر إن شاء الله عارفين المتغير Variable لما نحب نخزن قيمة خلية على سبيل المثال كنا نضع قيمة الخلية في متغير بهذا الشكل (بفرض أنه هناك نص في الخلية A1 والمطلوب تخزين قيمة الخلية في متغير ) Sub StringVariable() Dim strName As String strName = Range("A1").Value MsgBox strName End Sub قمنا بالإعلان عن المتغير وفي السطر التاني وضعنا قيمة للمتغير بحيث يساوي قيمة الخلية A1 وفي آخر سطر أظهرنا قيمة المتغير من خلال رسالة في المثال تم تخزين قيمة خلية واحدة ... طيب لو عندي 100 اسم في العمود الأول ..هل كل خلية هعمل متغير وأخزن فيه قيمة الخلية ( طبعاً مستحيـــــــــــــــــــــــــــــــــــل ) من هنا نعرف أهمية التعامل مع المصفوفة ، لإنك من خلال المصفوفة تقدر تخزن أي صف وأي عمود أو حتى أي نطاق مكون من صفوف وأعمدة لو هنتعامل مع صف واحد يبقا المصفوفة (ذات بعد واحد) ، لو مع عمود واحد (بردو ذات بعد واحد) ، لكن لوهنتعامل مع صفوف وأعمدة يبقا في الحالة دي (المصفوفة ذات بعدين ..بعد الصفوف وبعد الأعمدة) نرتاح شوية بعد ماعرفنا ايه فايدة المصفوفة وننتقل لمثال عملي بسيط لكيفية الإعلان عن المصفوفة ..... ارتحنا ..الحمد لله .. ننتقل إلى الجزء الثاني شكل المصفوفة :المصفوفة تتكون من عناصر وكل عنصر له رقم (يعني زي كتاب وله فهرس ..كل صفحة في الكتاب ليها رقم في الفهرس) المصفوفة زي الكتاب ... والعناصر زي الصفحات .. وكل عنصر له رقم في الفهرس زي ما كل صفحة ليها رقم في فهرس الكتاب محرر الأكواد بيتعامل مع المصفوفات ويبدأ يضع فهرس للعناصر بس مش بيبدأ برقم واحد بيبدأ برقم صفر مثال : لو مصفوفة مكونة من 4 عناصر يبقا الفهرس هيكون بالشكل ده ( 0 - 1 - 2 - 3 ) يعني أول عنصر له رقم الفهرس صفر ، وتاني عنصر له رقم الفهرس واحد ، وتالت عنصر له الرقم 2 ، والرابع والأخير له الرقم 3 .... تعبتكم معايا في الفهرس سؤال : هل ممكن إني أخلي محرر الأكواد يغير طريقة الفهرسة لعناصر المصفوفة بحيث يبدأ من رقم 1 ؟ الإجابة نعم (بس اصبر عليا عشان بتوه وبنسى) مثال تطبيقي : ضع الكود التالي في محرر الأكواد Sub OneDimensionalArrayA() Dim Arr(0 To 3) As String Arr(0) = "A" Arr(1) = "B" Arr(2) = "C" Arr(3) = "D" End Sub السطر الأول بنعلن عن المصفوفة بعد اسم المتغيرArr وضعنا بين قوسين حجم المصفوفة من 0 إلى 3 أي أن الفهرس يبدأ من 0 إلى 3 (إذاً عدد عناصر المصفوفة كام ؟ عد من 0 إلى 3 هتلاقي الناتج 4 أي 4 عناصر بالمصفوفة) من محررالأكواد روح للقايمة View وانقر على الأمر Locals window هيظهر نافذة نقدر من خلالها نتابع عمل الكود ضع مؤشر الماوس في أي مكان داخل الإجراء الفرعي المسمى OneDimensionalArrayA ثم من لوحة المفاتيح اضغط F8 ... سنجد السطر التالي مظلل بالأصفر Sub OneDimensionalArrayA() بص كويس على نافذة Locals ستجد المتغير من النوع مصفوفة المسمى Arr على يمينه علامة زائد انقر عليها هيفتح لك عناصر المصفوفة ستجد العنصر الأول بهذا الشكل Arr(0) وهكذا مع بقية العناصر ..كيف عرف محرر الأكواد أن العناصر 4 عناصر ؟؟ لأننا حددنا حجم المصفوفة بين الأقواس نلاحظ أيضاً في نافذة Locals في العمود المسمى Value أن العناصر لا تحمل أي قيمة بعد ، سنجد "" (أقواس تنصيص) أي أنها فارغة ... هذا هو شكل المصفوفة أي أنه يعد بمثابة متغير واحد يحمل عدة متغيرات ... اضغط F8 مرة أخرى ستجد السطر التالي مظلل بالأصفر Arr(0) = "A" لا يوجد أي تغيير في نافذة Locals ... نلاحظ أنه بعد الضغط على F8 والخروج من السطر الأصفر الحالي يتم تنفيذ السطر ..أي أن التنفيذ بعد الخروج من السطر نضغط F8 للمرة الثالثة لتنفيذ السطر السابق سنجد في نافذة Locals في العمود Value أن العنصر الذي له رقم الفهرس صفر يحمل القيمة A أكمل بالضغط على F8 وبعد كل ضغطة لاحظ النافذة جيداً لتعرف التغيرات ماذا كان يحدث في أسطر الكود ..؟ تقوم الأسطر بتعيين قيمة لكل عنصر داخل المصفوفة الآن جرب بنفسك الكود التالي Sub OneDimensionalArrayB() Dim Arr(1 To 4) As String Arr(1) = "A" Arr(2) = "B" Arr(3) = "C" Arr(4) = "D" End Sub لاحظ أننا يمكننا تغيير بداية الفهرسة من صفر إلى 1 كما بالمثال .. لاحظ التغيرات ..بما أن عدد العناصر أربعة تم تغيير الرقم 3 الذي هو آخر رقم بالفهرس إلى 4 .. وفي الأسطر تم التعديل ليناسب التغيير الذي تم بالسطر الأول ننتقل لآخر جزئية الآن .. معرفة أول رقم في الفهرس وآخر رقم في الفهرس نعود للمثال الأول Sub OneDimensionalArrayA() Dim Arr(0 To 3) As String Arr(0) = "A" Arr(1) = "B" Arr(2) = "C" Arr(3) = "D" MsgBox LBound(Arr) MsgBox UBound(Arr) End Sub لمعرفة أول رقم في الفهرس نستخدم الكلمة LBound ثم نفتح قوس ونكتب اسم المصفوفة المطلوبة >> الناتج في المثال سيكون رقم 0 لمعرفة آخر رقم في الفهرس نستخدم الكلمة UBound ثم نفتح قوس ونكتب اسم المصفوفة المطلوبة >> الناتج في الثال سيكون رقم 3 جرب بنفسك تغيير أبعاد المصفوفة من 0 إلى 3 ، وخليها من 1 إلى 4 وغير ما يلزم وشوف النتائج Sub OneDimensionalArrayB() Dim Arr(1 To 4) As String Arr(1) = "A" Arr(2) = "B" Arr(3) = "C" Arr(4) = "D" MsgBox LBound(Arr) MsgBox UBound(Arr) End Sub وإلى لقاء آخر ...دمتم على طاعة الله *********************************************** الجزء الثاني إخواني وأحبابي في الله .. بعد أن تعرفنا على الشكل العام للمصفوفة وعرفنا أنها مكونة من عناصر وكل عنصر له رقم في فهرس المصفوفة نتعرف الآن على طريقة أخرى لتخزين قيم المصفوفة .. في السابق خزنا كل قيمة داخل عنصر تباعاً أي تم تعيين قيمة لكل عنصر ..عنصر عنصر الطريقة التي سنتعلمها الآن هي كيفية تخزين مجموعة من القيم مرة واحدة بسطر واحد .. الأمر في منتهى اليسر ، سنقوم باستخدام كلمة Array ثم نفتح قوس بالضغط على Shift + 9 ثم نضع القيم بالترتيب المطلوب وكل قيمة توضع داخل أقواس تنصيص ويفصل بين كل عنصر وعنصر فاصلة وليس فاصلة منقوطة وفي نهاية المطاف نغلق القوس بالضغط على Shift + 0 اختصار للكلام الكتير شوف السطر ده ..هنخزن قيم المصفوفة بهذا الشكل Arr = Array("A", "B", "C", "D") تم تخزين 4 قيم داخل المصفوفة .. لمعرفة أول الفهرس نستخدم كلمة LBound ولمعرفة رقم آخر الفهرس نستخدم كلمة UBound كما عرفنا من قبل لو ضغطنا F8 وتفحصنا نافذة الـ Locals سنجد أن الفهرس يبدأ من صفر .. إذاً أرقام الفهرس هنا في السطر السابق ستكون 0 ، 1 ، 2 ، 3 طيب نضع المثال بالكامل ثم نقوم بشرحه وتشريحه Sub OneDimensionalArray3() Dim Arr Arr = Array("A", "B", "C", "D") Range("A1").Resize(1, UBound(Arr)) = Arr Range("A2").Resize(UBound(Arr), 1) = Application.Transpose(Arr) End Sub في المثال تم الإعلان بشكل عام عن المصفوفة دون تحديد أبعادها كما فعلنا من قبل تم وضع قيم المصفوفة في السطر الثاني كما أسلفنا المطلوب الآن أن نعرف كيف نقوم بوضع قيم المصفوفة داخل نطاق وهذا الأمر في غاية الأهمية السطر الثالث يقوم بوضع القيم في الصف الأول بدايةً من الخلية A1 إلى ؟؟ النهاية مجهولة في الغالب ..عشان كدا بنعتمد على آخر رقم في المصفوفة باستخدام UBound بمعنى آخر : فيه خاصية اسمها Resize (إعادة تحجيم) فالسطر بيقول ايه؟ انطلاقاُ من الخلية A1 سيتم تحديد حجم النطاق طبقاً للأرقام داخل الخاصية Resize الرقم الأول يمثل عدد الصفوف والرقم الثاني يمثل عدد الأعمدة .. بما إننا عايزين نضع القيم في الصف الاول فقط يبقا عدد الصفوف هيكون واحد .. أما عدد الاعمدة هيكون مرتبط بطول المصفوفة وعشان نعرف طول المصفوفة زي ما قلنا نعرف آخر رقم فيها باستخدام كلمة UBound ..طيب جميل أوي لحد دلوقتي !! نيجي للقاضية . طول المصفوفة في المثال 4 عناصر لكن لو استخدمنا كلمة UBound عشان نعرف آخر رقم يبقا في الحالة دي هيكون الناتج 3 مش 4 (يا دي الحيرة) المشكلة إن المصفوفة بتبدأ من صفر عشان كدا نهايتها عند الرقم 3 .. لو تركنا المثال زي ما هو كدا ..ايه اللي هيجرا .. الجزء التاني الخاص بعدد الأعمدة اللي هو ده UBound(Arr) الناتج هنا لو حسبنا بشكل يدوي يساوي 3 إذاً سيتم تحجيم النطاق بمقدار صف واحد و3 أعمدة .. فلو بصينا على الورقة بعد تنفيذ الكود هنلاقي القيمة A في الخلية A1 ، والقيمة B في الخلية B1 ، والقيمة C في الخلية C1 ووقف لحد هنا .لأننا حددنا عدد الأعمدة 3 من خلال رقم آخر فهرس في المصفوفة .. طيب إزاي نحل الإشكالية دي ؟؟ ببساطة إحنا عارفين إن المصفوفة بدأت من الصفر يبقا في الحالة دي عشان نحدد عدد الأعمدة نزود واحد وخلصت الحكاية يعني السطر هيكون بالشكل ده Range("A1").Resize(1, UBound(Arr) + 1) = Arr فيه طريقة تانية نخلص من المشكلة بشكل نهائي إننا نضع جملة Option Base 1 يتم وضعه خارج الكود في قسم الإعلانات العامة في الموديول وفي الحالة دي مفيش داعي نزود واحد في السطر لأننا حلينا المشكلة بشكل تاني يعني الكود هيكون بالشكل ده Option Explicit Option Base 1 Sub OneDimensionalArray3() Dim Arr Arr = Array("A", "B", "C", "D") Range("A1").Resize(1, UBound(Arr)) = Arr Range("A2").Resize(UBound(Arr), 1) = Application.Transpose(Arr) End Sub ننتقل لآخر سطر ونعرف ايه الاختلاف .. ركز وحاول دايماً تشوف الفرق .. في السطر السابق للسطر الأخير وضعنا قيم المصفوفة في الصف الأول في الأربعة أعمدة A - B - C - D في السطر الأخير يتم وضع القيم بشكل رأسي وليس أفقي أي وضعها في عمود (والمصفوفة تتعامل مع الصفوف بشكل أيسر لأنها تعتبر على شكل صف في المثال الذي نقوم بشرحه) السؤال إزاي هنخلي المصفوفة تقرا القيم بشكل رأسي .. الموضوع بسيط جداً بس نشرحه من خلال الإكسيل الأول روح لورقة العمل وحدد أي مجموعة قيم في صف واحد ... يعني مثلاً حدد النطاق A1:D1 واعمل Copy نسخ وتعال في أي خلية بعيد شوية واعمل كليك يمين ثم Paste Special أي لصق خااااص وعلم علامة صح على الخيار Transpose الموجود في النافذة اللي هتظهر لك ولاحظ ما يحدث هتلاقي القيم اتغيرت من الشكل الأفقي للشكل الرأسي وهو دا حل المشكلة .. أي لوضع القيم في عمود نستخدم الجملة Application.Transpose عشان نحول المصفوفة من شكل أفقي لشكل رأسي طبعاً مننساش إن خاصية Resize هنا هتختلف : بمعنى عدد الصفوف هنا يمثل عدد عناصر المصفوفة أما عدد الأعمدة فعمود واحد ... بص للسطرين عشان تعرف الفرق ما بين وضع القيم بشكل أفقي ووضعها بشكل رأسي مش هطول عليكم عشان نقدر نستفيد وأنا معاكم بستفيد مثلكم تماماً .. تقبلوا تحياتي وإلى لقاء آخر متجدد بإذن الله ********************************************************************** الجزء الثالث إخواني الكرام نتعرف اليوم على الحلقات التكرارية للمصفوفة أو تحديداً لعناصر المصفوفة نفترضأن لدينا مصفوفة مكونة من 5 عناصر ونريد وضع قيم هذه المصفوفة في 5 صفوف في النطاق A1:A5 (تعلمنا أننا يمكننا ذلك في سطر واحد ..راجع ما سبق) ولكن كنوع من التدريب على استخدام الحلقات التكرارية سنقوم بعمل حلقة تكرارية لوضع قيم عناصر المصفوفة في الخمس خلايا لعمل حلقة تكرارية نقوم أولاً بالتفكير .. ما هو المتغير الذي سيجعلنا نقوم بالحلقة التكرارية (هنا قد يكون المتغير الصف .. لأننا نريد أن نضع قيمة في الصف رقم 1 ثم الصف رقم 2 ثم الصف رقم 3 وهكذا ... وقد يكون المتغير عناصر المصفوفة لأننا نتعامل مع العنصر رقم 1 ثم العنصر رقم 2 ثم العنصر رقم 3 وهكذا) بذلك تتضح الحلقة التكرارية أننا نريد أن نقوم بتنفيذ سطر محدد عدد من المرات بالمثال يتضح المقال Sub LoopArrays() Dim I As Integer Dim Arr(1 To 5) As Integer Arr(1) = 10 Arr(2) = 20 Arr(3) = 30 Arr(4) = 40 Arr(5) = 50 For I = LBound(Arr) To UBound(Arr) Cells(I, "A") = Arr(I) Next I End Sub هذا هو الكود بالكامل .. نبدأ في عملية التشريح السطر الأول دا المتغير اللي هنخزن فيه قيمة المتغير أثناء الحلقة التكرارية.. بمعنى مع كل لفة مع كل حلقة تكرارية فيه راجل ماسك الراية ومع كل لفة بيرفع راية جديدة المتغير I في السطر الأول سيكون بمثابة حكم الراية ..في أول لفة تلاقيه رافع راية احدة (حسب نقطة البداية ...يعني ممكن تكون نقطة البداية لا تساوي 1 ...ممكن الحلقة التكرارية تبدأ من أي رقم تاني غير الواحد ...المهم في المثال إحنا هنبدأ من 1) ... نرجع تاني لحكم الراية ..مع اللفة التانية هيكون قيمة المتغير 2 ومع اللفة التالتة هيكون 3 وهكذا .... السطر التاني اتعودنا عليه ..الإعلان عن مصفوفة أحادية الأبعاد بدايتها 1 ونهايتها 5 (ممكن نكتب بين القوسين 5 بس .. بس هتقابلك مشكلة إن المصفوفة هتترقم في الحالة دي بدايةً من الصفر ...راجع الجزء الأول والثاني) الأسطر التالية بيتم فيها تخزين قيم المصوفة : العنصر الأول في المصفوفة هيكون قيمته 10 ، والثاني 20 وهكذا نيجي بقا للحلقة التكرارية في نهاية الكود ... بعد الإعلان عن المصفوفة وتخزين القيم لعناصر المصفوفة ، تيجي الحلقة التكرارية عشان نقدر نعدي على كل عناصر المصفوفة بنستخدم الجملة For بعديها حكم الراية .... بعد كدا علامة يساوي ونحدد نقطة الإنطلاق أونقطة البداية ونقطة النهاية وبين البداية والنهاية كلمة To نقطة البداية هتكون رقم الفرس لأول عنصر في المصفوفة : ودي عرفنا إزاي نجيبها من خلال LBound وبين قوسين بنكتب اسم المصفوفة ونفس الكلام مع نقطة النهاية ودي هتكون رقم الفهرس لآخر عنصر في المصفوفة وبردو عرفنا إزاي نجيبها من خلال كلمة UBound وبين قوسين اسم المصفوفة يبقا خلاصة السطر الأول في الحلقة التكرارية ..بنقول إننا هنبدأ منين وننتهي فين ولازم القفلة يعني جملة For لازم يكون ليها مقابل أوقفلة والقفلة هي السطر Next I ... دي زي الترس اللي بيدور العجلة (حلو التشبيه ده) والترس ده يقف لما حكم الراية يوصل لنقطة النهاية بلغة البرمجة : لما المتغير I يساوي نقطة النهاية (زي المثال نقطة النهاية تساوي 5) لما المتغير I يساوي 5 ، بكدا تتوقف الحلقة التكرارية ..أي يتوقف الترس المهم في الكود كله السطر اللي بين سطري الحلقة التكرارية (هو دا اللي هيتنفذ مع كل لفة) Cells(I, "A") = Arr(I) كلمة Cells اللي يعرف شوية في البرمجة يعرف إنها متبوعة بين قوسين برقم الصف ورقم أو اسم العمود فلو كنا في اللفة الأولى يبقا المتغير I يساوي واحد ...في الحالة دي رقم الصف هو 1 واسم العمود A أي الخلية A1 >> ملحوظة هامة ممكن نشيل حرف "A" ونضع مكانه رقم العمود 1 بالشكل ده cells(I,1) يبقا الخلية A1 تساوي ؟؟؟ مجهول !!! تساوي العنصر في المصفوفة الذي يحمل رقم الفهرس ..يعني إحنا قلنا إن المتغير I يساوي واحد إذاً الخلية A1 تساوي أول عنصر في المصفوفة ثم تبدأ اللفة الثانية ويتغير المتغير I يصبح 2 فنبدأ بالتعامل مع الصف الثاني والعمود الأول أي الخلية A2 ونقول تساوي قيمة ثاني عنصر من عناصر المصفوفة وهكذا وهكذا أرجو أن أكون وفقت في توصيل المعلومة شكل سلس يسهل معه فهم البرمجة وفهم كيفية التفكير العلمي والكروي والميكانيكي (حيث تحدثنا بلغة البرمجة وتطرقنا للغة كرة القدم وأخيراً عملنا بالميكانيكا مع التروس) تقبلوا تحياتي
    1 point
  4. الاجابة : ستجدونها فى الجزء الثانى من شرح الأستاذ ياسر أظن أنها واضحة اضافة : نسخ نطاق مستخدما أسلوب المصفوفات لنفرض أنه عندى مجموعة قيم فى النطاق ("A1:A10") كيف يمكن نسخ هذا النطاق بطريقة المصفوفات ؟ الاجابة بكل بساطة : نخزن قيم النطاق فى مصفوفة ثم نحدد مكان التعبئة أو النسخ بس خلاص الكود المستخدم فى النسخ : اختر واحدا من الكودين التاليين : Sub copyrangeusingarray() Dim Arr Arr = Range("A1:A10") Range("D1").Resize(UBound(Arr), 1) = Arr 'نسخ عمودى End Sub Sub copyrangeusingarray2() Dim Arr Arr = Range("A1:A10") Range("G5").Resize(1, UBound(Arr)) = Application.Transpose(Arr) ' نسخ أفقى للبيانات End Sub بمقارنة الكودين نلاحظ اختلافا بعد كلمة Resize هذا الاختلاف ينجم عنه شكل النسخ أفقيا أو رأسيا وأستاذنا ياسر شرح لنا Application.Transpose يلا جرب الكودين مع وضع مجموعة قيم فى النطاق ("A1:A10") تحياتى لكم
    1 point
  5. اخى الحبيب أ. عبد العزيز البسكرى حقاً لا اجد من الكلامات ما تعبر عن امتنانى وشكرى لحضرتك ولكلماتك الطيبة شكرأ جزيلاً على دعائك للوالدة رحمها الله .... عظم الله اجرك اخى الحبيب خالص حبى وتقديرى وامتنانى اما عن الكتاب فقد كان عمل مترجم فى اغلبة والان افكر فى اعادة صياغتة بما اكتسبتة فى الفترة الماضيه منذ كتابتة والى الان واسال الله التوفيق والعون فى ذلك
    1 point
  6. اخى الفاضل جرب المرفق وابدى ملاحظاتك كى يصبح الامر واضحاً Book1_3.rar
    1 point
  7. السلام عليكم و رحمة الله و بركاته ألف شكر أستاذي القدير خالد الرشيدي على التشجيع الطيّب ..بارك الله فيك و زادك من علمه و فضله ..أعمالك حقيقةً قمّة في الرّوعة و أنا بصدد متابعة كتابك و معلوماته القيّمة و سلاسة مفاهيمه .. و بالمناسبة "ألف رحمة و نور على روح الوالدة الكريمة" رحمها الله و أسكنها فسيح جنانه أخوك / عبد العزيز البسكري
    1 point
  8. جرب الكود التالي .. Private Sub Workbook_Open() Dim X As Long, WS As Worksheet, SH As Worksheet Set WS = Sheets("متوسط اوزان الشهر ") X = WS.Range("XFD1").Value Application.ScreenUpdating = False Application.DisplayAlerts = False Application.Calculation = xlManual If X > 5 Then For Each SH In ThisWorkbook.Sheets If SH.Name <> "متوسط اوزان الشهر " Then SH.Delete Next SH Else WS.Range("XFD1").Value = X + 1 End If ThisWorkbook.Save Application.Calculation = xlAutomatic Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
    1 point
  9. عمل مـــــــــميز أ.عبد العزيز البسكرى ولفت فيه انتباهى عن افراغ خلية الادخال فى الكومبوبوكس ترجع كافة النتائج لتظهر مرة اخرى وهذا ما لم افعلة فى المرفق الاول لى ولهذا المرفق مرة اخرى ولكن هذه المرة حال افراغ صندوق الادخال تظهر كافة النتائج بالليست بوكس خالص تحياتى وتقديرى العطارتمسنا_2015_07_21.zip
    1 point
  10. السلام عليكم إخوتي الكرام ما شاء الله بارك خلية نحل بموضوع مهم ..ولكي أحصل على قسط كبير لأدرسه دراسة متأنية ..بعد الدوام الشاق ..سأقوم بعون الله تعالى بنسخه إلى ملفات Word لأحصل على رشفة من فيض عطائكم إخوتي الكرام فكل منكم بذل جهودا مشكورة تسجل لكم على مر اﻷيام...ما أحلى العلم !!.وما أجمل التكامل!!. خلايا سداسية تنتج عسلا سائغا للشاربين..هلمو للنهل من علم نافع نحن أجدر به من أولئك الذين أخذوا اللب وأعطونا القشور. نحن موعودون بتسهيل طريق إلى جنة عرضها السموات واﻷرض لسلوكنا طريق العلم الناصع وفوق كل ذي علم عليم والسلام عليكم ورحمة الله وبركاته...
    1 point
  11. السلام عليكم و رحمة الله و بركاته إضافة لما تقدّم به الأساتذة الأفاضل من نماذج ..بارك الله فيكم جميعًا و جزاكم الله خيرًا ..إثراء لهذا الموضوع تفضّل أخي محمد عبد السّلام نموذجًا آخرًا لعلّه في بالغرض ..بإمكانك البحث عن اسم الصنف بأول حرف تكتبه داخل الكومبوبوكس ثم الترحيل إلى ورقة العمل .. تحياتي واحتراماتي للجميع الفاتورة 123.rar
    1 point
  12. اخى ياسر اعتقد انك مجبتش جديد يعنى المعلومات دى معظمنا بيعرفها ولكن انا شخصيا كنت اجهل معرفة الكثير من المحتوى الذى تفضلت بشرحه ولذلك فانا مصر على متابعة هذا الموضوع لانك بصراحه تبجر المتابع انه يستفيد والله مش عارف اشكرك ازاى بس كل الى ققدر اعمله انى اققولك زادك الله من فضله وعلمه وجعلك نافعا بعلمك تقبل تحياتى
    1 point
  13. وعليكم السلام ورحمة الله وبركاته أخي وحبيبي في الله أبو يوسف جزيت خيراً على دعائك الطيب ومرورك العطر وإن كنت أفضل ألا يكون مروراً وفقط وأن يكون تفاعلاً ومشاركةً ومساهمةً .. أقدر ضغوط عملك وأتمنى تواجدك بيننا إن شاء الله تقبل وافر تقديري واحترامي
    1 point
  14. السلام عليكم أخي الحبيب أبو البراء: أدعو الله لك بالتوفيق في بحثك هذا ضغط العمل في أيامي هذه يجعلني قليل المتابعة ...ولكن لا يمكن إلا أن أفتح على مستجدات أوفيسنا...إكسلنا بين الفينة والأخرى..لأنه أصبح هاجس لدي. أعلم مقدرتك على تبسيط وتنسيق وتسلسل مراحل عملك ...أهنئك على ذلك ..لأنه كما أسلف أخي بكار دليل على فكر منظم ...تقبل تحياتي.. بــــــــــــــــــــــــــــــــارك الله
    1 point
  15. تفضل أخي الكريم لاحظ كود زر عودة أصبح لإغلاق النموذج وليس الخروج من الأكسس لاحظ مصدر التقرير ستجد أنه تم إضافة معيار لقراءة رقم ىالطالب من النموذج المفتوح لاحظ كود فتح التقرير الأول في نموذج التقارير ويمكنك تنفيذ نفس الخطوات مع باقي الأزرار StudentsRegister1.rar
    1 point
  16. اخى مختار بالفعل كل النقاط التى تفضلت بذكرها ستجعلنا نتقن التعامل مع المصفوفات خصوصا حينما يقدمها لنا استاذ بحجم وقدر استاذنا ياسر تقبل تحياتى
    1 point
  17. السلام عليكم مجرد مشاركة جرب هذا مع الشكر الجزيل للجميع =IFERROR(IF(C11="";"";VLOOKUP($C11;$BE$1:$BG$118;3;0));"")
    1 point
  18. اخى الفاضل استخدم المعادلة التالية وابدى ملاحظاتك =VLOOKUP($C11;CHOOSE({1,2};$BE$1:$BE$500;$BC$1:$BC$500);2;0)
    1 point
  19. ولاثراء الموضوع ها هى معادلة اخرى =OFFSET(INDIRECT(ADDRESS(7;MATCH($AD$5;$B$7:$AB$7;0)));ROW(A1);1;;)
    1 point
  20. تسلم أخوي محمد نتيجة عمل برامج مختلفة ، لفئات مختلفة ، على فترات مختلفة ، بلغات مختلفة ، لسنوات عدة ، يسمونها خبرة ولولا اسئلة الشباب ، لما طلعت هذه الخبرة للملأ فالشكر موصول لكم ، لأسئلتكم ومداخلاتكم جعفر
    1 point
  21. اختي العزيزة حلا بعد التحية اتمنى لكي التوفيق بمشروعك الدراسي .. بخصوص استفسارك اذا لم يتم الحضور يسجل في خانة تسجيل اجازة انه حاصل على اجازة .. اذا احسنت الفهم فالجواب يتم تحقيق المطلوب بطرق كثيرة ومن ضمنها قاعدة IF If [attendace] = False Then [Status] = "إجازة" Else [Status] = "" EndIf علما بأن attendace = تم الحضور Status = تسجيل اجازة وتقبلي تحياتي
    1 point
  22. حياك الله اخي الكريم .... طبعا يوجد اكثر من طريقة .. ولكن استخدام المعالج اسهلها .. لديك استعلام بأسم (اس جديد 1) . من انشاء اختر معالج التقرير ثم اتبع الخطوات التالية : 1- اضف كافة حقول الاستعلام . 2- يأتيك سؤال هل ترغب في اضافة مستويات تجميع .. اختر بالضغط على اسم الحقل مرتين اولا country ثم firstName . 3- التالي .... التالي .. يأتيك سؤال ماهي الطريقة التي تريدها لتخطيط التقرير .. اختر مفصل ... ثم التالي ... التالي حتى انهاء ... الأمور المتبقية تنسيقية ... مثل اضافة صورة للتقرر او سحب الحقول بجوار بعض .. واضافة مربع نص للجمع ومربع اخر لعد السجلات .. == =============================================== طريقة اخرى وهي تحديد الاستعلام اس جديد 1 ومن ثم من انشاء الضغط على تقرير .. في وضع التصميم اضغط بزر الفارة الأيمن على تجميع وفرز ويمكنك ايضا تحديد مستويات التجميع وكذلك الفرز . اتمنى اكون افدتك ... بالتوفيق
    1 point
  23. بالنسبة للكود الذى ذكره الاخ رمهان فهو يحل تلك المشكلة [pay]-If(IsNull([loan]);0;[loan]) -[pay] تعنى الحقل pay طرح وبدلا من وضع loan بعد علامة الطرح نضع الجملة الشرطية if كما يلى If(IsNull([loan]) هنا نضع الشرط اذا كان حقل الخصومات فارغا ;0 هنا اذا كان الشرط صحيح يصرح من حقل الراتب 0 ;[loan] هنا اذا كان الشرط غير صحيح اى الخصم لايساوى 0 اطرح من الراتب حق الخصم ارجوا ان اكون شرحت الكود بشكل واضح اود ان اضيف الى ماقاله الاستاذ رمهان يمكنك ان تستخدم الكود الاول مع جعل القيمة الافتراضية للحقل الخصم ="0" فيتم الطرح مباشرة بالتوفيق
    1 point
  24. اخينا محمد ومشاركة مع اخي نور الدين عرف ان حقول الجدول لتخزين البيانات الخام ! وانه ليس لوجود الحقل المحسوب مكان في الجدول وكما ذكر اخي نور الدين ! ولكن اتت ميزة جديدة في 2010 وما بعد وهو انه يمكن اجراء العمليات الحسابية في الجدول ولكن العمليات فقط الرياضية البسيطة وكما في سؤالك ! لذلك اليك الطريقة : 1. سيكون عمود ا sel من نوع بيانات محسوب 2. ضع التعبير التالي في خاصية التعبير للحقل المحسوب: [pay]-IIf(IsNull([loan]);0;[loan]) بالتوفيق
    1 point
  25. أخي الفاضل أهلا ومرحباً بك في المنتدى من المفترض أن يتم شرح المطلوب بشكل أكثر تفصيلاً ولكن لأني عملت على مثل هذا الكود من قبل فقد أدركت المطلوب .... يرجى الإطلاع على موضوع التوجيهات للأعضاء الجدد في الموضوعات المثبتة في المنتدى ويرجى تغيير اسم الظهور للغة العربية إليك الكود التالي عله يفي بالغرض Sub TransferDataToClosedWB() On Error Resume Next Dim WB As Workbook Dim LR_A As Long, LR_B As Long Dim Answer As Long LR_A = IIf(Cells(Rows.Count, 1).End(xlUp).Row <= 8, 9, Cells(Rows.Count, 1).End(xlUp).Row) Application.ScreenUpdating = False ThisWorkbook.Sheets("Sheet1").Range("B9:K" & LR_A).Copy Set WB = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & "اكسل2.xlsm") With WB.Sheets("Sheet1") LR_B = IIf(Cells(Rows.Count, 1).End(xlUp).Row <= 2, 3, Cells(Rows.Count, 1).End(xlUp).Row + 1) .Range("A" & LR_B).PasteSpecial xlPasteValues .Range("L" & LR_B).Value = ThisWorkbook.Sheets("Sheet1").Range("F6").Value .Range("M" & LR_B).Value = ThisWorkbook.Sheets("Sheet1").Range("B4").Value End With On Error GoTo 0 WB.Close SaveChanges:=True Application.CutCopyMode = False Application.ScreenUpdating = True End Sub لا تنسى أن تحدد أفضل إجابة وأن تضغط على كلمة "سجل إعجاب بهذا" .. Desktop V2.rar
    1 point
  26. أخي الكريم أبو حنين قم بتعديل المعادلة في الخلية H5 لتكون بهذا الشكل =IF(AND(E5>$D$1-1,E5<$D$2+1),IF($G$1="",$C5,$C5&$F5),"") وفي الكود قم بإضافة السطر التالي If IsEmpty(Range("D3")) Then WS.AutoFilterMode = False: Exit Sub بعد السطر Application.ScreenUpdating = False جرب وشوف النتائج لاحظ أن غيرك عمل إعجاب في المشاركة رقم 2 رغم إنه مش صاحب الموضوع (يا أخي الكسل وحش أوي ,,,) تقبل تحياتي
    1 point
  27. هل تعلم ان الداله SUMIFS عدد الشروط فيها يمكن ان يصل الى 127 شرط
    1 point
  28. السلام عليكم اخي الكريم افعل ما تريد بالعمل واي اضافة او تعديل تريده لا تتردد في طرح الموضوع مره ثانية اقبل تحياتي واحترامي
    1 point
×
×
  • اضف...

Important Information