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

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

  1. رمهان

    رمهان

    الخبراء


    • نقاط

      4

    • Posts

      2,390


  2. sandanet

    sandanet

    الخبراء


    • نقاط

      4

    • Posts

      1,366


  3. سليم حاصبيا

    سليم حاصبيا

    أوفيسنا


    • نقاط

      3

    • Posts

      8,723


  4. محمد سلامة

    محمد سلامة

    الخبراء


    • نقاط

      2

    • Posts

      1,223


Popular Content

Showing content with the highest reputation on 29 مار, 2018 in all areas

  1. حيث انك لم ترفع ملفاُ للعمل عليه ارفق لك هذا النموذج_(يمكنك تعديل الكود كما تراه مناسباً) Hide_spec_sheet.xlsm
    2 points
  2. بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته اخوتي / اخواتي لي الشرف ان انظم الى هذا الصرح العلمي ، سائلاً المولى جل وعلا ان يوفقني لما فيه الخير للجميع 🙂 في اول مشاركة لي ، اضع بين يديكم برنامج مسقط التقارير (مسمى صانع التقارير متداول كثيرا ، لذا احببت ان اسمي برنامجي بإسم مميز ، إسم مسقطنا الحبيبة 🙂 ). البرنامج في نسخته الاولى ، لذا ، فلا تتوقعوا الكثير منه 🙂 في احد المشاريع التي عملت عليها قريبا ، كان العمل لسجلات شؤون الموظفين ، ولم يكن بالامكان عمل تقرير محدد ، حيث كانت التقارير المطلوبة من الادارة بشتى انواع البيانات ، طولا وعرضا. لذا اضطررت العمل على صانع للتقارير (في الواقع مسقط التقارير يعتبر برنامجا بحد ذاته ، فالعمل كان ، برنامج في برنامج 🙂 ). مع ان البرنامج بسيط في طريقة عمله (وطبعا عندي الكثير من الاشياء الاخرى التي اود ان اضيفها ، لكن في وقتها ان شاء الله ، وبما ان البرنامج مفتوح المصدر ، فانا ارحب بمن يضيف عليه خصائص جديدة 🙂 ) ، فمع بساطة البرنامج ، إلا ان نتائجه مرضية 🙂 العمل على البرنامج ابسط بكثير من شرحه 🙂 يمكنك نقل هذه الكائنات السته الى برنامجك الخاص ، ومسقط التقارير سيعمل بدون الحاجة الى اي تغيير او كود: مسقط التقارير يعمل على الجداول والاستعلامات فقط ، واليكم طريقة العمل: جدول او استعلام: اختر من ايهم تريد ان تعمل تقريرك ، جدول او استعلام ، الاسم: على اساس الاختيار السابق ، ستظهر لك قائمة بجداولك او استعلاماتك ، وعندما تختار اسم جدول او استعلام ، فان النموذج الفرعي الذي اسفل الاسم سوف يمتلئ باسماء الحقول من الجدول او الاستعلام ، وكلها عليها اشارة اخفي (اي كلها ستكون مخفية من الظهور في النموذج الفرعي الذي بالاسفل) ، احذف اشارة الاخفاء عن الحقول/الخانات التي تريدها ، وستظهر لك في النموذج الفرعي الذي في اسفل النموذج. هذا النموذج هو شكل مبسط من التقرير ، فكما ترى الحقول وعرضها ، وعدد السجلات ، ستراها في التقرير. هناك خطان فوق النموذج الفرعي ، باللون الاصفر والاخضر ، اذا كانت بياناتك اقل من الخط الاصفر ، سيكون التقرير بالطول ، وإلا فانه سيكون بالعرض ، وهناك خطان صفر ، فالمسافة بينهم ستكون للترقيم التلقائي للتقرير (لاحظ ان التقرير لبيانات النموذج ادناه سيكون بالعرض ، لأننا تخطينا الخط الاصفر 🙂 يمكننا ان نمسك الحقول/الخانات بالزر الايسر من الفأرة ونغير ترتيبها يمينا ويسارا ، كما ان البرنامج يحترم عرض الحقل الذي تقوم بتعديله ، (لاحظ ان التقرير لبيانات النموذج سيكون بالطول ، لأننا في حدود الخط الاصفر 🙂 وهذا هو التقرير لبيانات النموذج السابق ، ولاحظ ان البرنامج يقوم بتغيير ارتفاع الصف تلقائيا ، حتى يمكن مشاهدة جميع بيانات الحقل. اذا قررت ان تتعدى الخط الاصفر ، فنفس شروط الخط الاصفر تنطبق على الخط الاخضر ، وهنا نرى باننا اضفنا عنوان لراس صفحة التقرير ، واضفنا معلومات عن موضوع التقرير ، بالاضافة الى معلومات في ذيل التقرير: وهذا هو تقرير لبيانات النموذج السابق ، ولاحظ ان البرنامج يوسع عمود الترقيم التلقائي ليسد المسافة: بعد اختيار الحقول التي نريدها في التقرير ، نستطيع ان نفرز الحقول بالطريقة التي نريد: وكذلك تصفية البيانات حسب الحاجة: وهذا هو تقرير لبيانات النموذج السابق ، لاحظ عدد السجلات قد تغير ، لأني طلبت ان ارى السجلات التي مبالغها اكبر من 500: البرنامج لا يحفظ التقارير (نعم ، عمل طريقة لحفظ اسم لكل تقرير ، على قمة قائمة التحديثات ان شاء الله 🙂 ) ارجوا ان تتقبلوا مني هذا العمل المتواضع 🙂 اسئلة/اقتراحات ، سأحاول الرد على قدر استطاعتي ان شاء الله 🙂 جعفر ملاحظة1: عمود المجموع لا يعمل ، وكان يجب ان اخفيه 😞 ملاحظة2: في الاساس كان عندي كمية كبيرة من صور الشرح ، إلا ان المنتدى لا يسمح بأكثر من 10 مرفقات ، فاختزلت الموضوع 🙂 ملاحظة3: ادراج فيديو لطريقة عمل التقرير: Muscat_Reports.zip
    1 point
  3. السلام عليكم اخواني واحبتي : في المثال المرفق نموذج مستمر ، عند التصفية من مربع التحرير يظهر 58 سجل في عمود واحد اريد عرض هذه السجلات في اكثر من عمود ، بالضبط كما نعمل في التقارير . الذي اعرفه انه في التقرير يتم عمل ذلك من خصائص اعداد الصفحة والنموذج يوجد فيه هذه الخصائص نفسها ولكنه لا يستجيب . قلت : لعل الاصدارات بعد 2003 تدعم هذه الخصيصة في النموذج افيدونا مأجورين ،،، test.mdb
    1 point
  4. الملف لا استطيع فتحه حيث برنامج الضغط لدي ليس اصدار حديث
    1 point
  5. 1 point
  6. جرب وان شاء الله زبطت وتقدر تغير الرقم 25 في الكود الى 20 او اي رقم حسب الحاجة تحياتي a1.mdb
    1 point
  7. تفضل أخى حماية الخلايا مباشرة بعد الإدخال.xlsm
    1 point
  8. 1 point
  9. هل تستطيع ارفاق تلك القاعدة المعطوبة؟
    1 point
  10. بالفعل تم العمل بشكل جيد هذا مااريده بالفعل ................. شكرا شكرا شكرا ............ لك منى التحيه .... جزاك الله كل خير
    1 point
  11. استاذي العزيز بوافر الشكر والتقدير نتقدم لك على هذا الأبداع وبارك الله فيك كذلك شكري وتقديري الى كافة الأستاذة والأعضاء في اسنادنا بالمعلمات جعلها الله في ميزان حسناتكم يبقى لنا طلب بسيط اذا تستطيع مساعدتنا .وهو ان كون البحث بالخلية بكود لاظهار الأكواد بدل القائمة المنسدلة .... قدر المستطاع . وفقكم الله جميعا وتقبلوا فائق التقدير اخوكم ابو شرف
    1 point
  12. المعادلات تعمل بشكل جيد عندي (لا اعلم ما السبب عندك) STORE-ITEM SSH2018 salim1.xlsm
    1 point
  13. تمام استاذ يوسف ظبطت.. طبعا بس تنويه ان المرفق المدرج هنا هو مثال بسيط اما في الواقع البرنامج مختلف.. الحمد لله ظبطت والشكر موصول لاخي اوس تحياتي
    1 point
  14. بعد رؤية لمسات الخبراء لايسعنا الا الشكر والدعاء لهم بالموفقية
    1 point
  15. شكرا استاذنا .. فكرة ولا أروع
    1 point
  16. و ايضاً يمكنك حساب ذلك بدون استعلام بوضع التعبير التالي بمربع النص على النموذج =DCount("id_company";"tbl_company";"[taxt_2]<=[taxt_1] ") بالتوفيق
    1 point
  17. 1 point
  18. تفضل ملفك بعد التعديل مثال.rar
    1 point
  19. شكرا استاذ يوسف.. وجاري التجربة.. حبيبي والله
    1 point
  20. اخي محمد من الافضل ارفاق ملف للتطبيق عليه لتجنب الاخطاء
    1 point
  21. اخي الكريم حمدي الكود الذي لديك هو للتوزيع التلقائي للحصص والمواد للمدرسين على الفصول خلال الاسبوع ... في البداية لديك تعريف للمتغيرات التي سوف يتم استخدامها في الكود وهي : بالنسبة للمتغيرات من tb1 الى tb4 فهي لتعريف جداول البيانات التي سيتم العمل عليها Dim i, sf, mrhla, sfofco, sfof(20) As String Dim tb1 As Recordset Dim tb2 As Recordset Dim tb3 As Recordset Dim tb4 As Recordset وبعدها لديك كود يقوم باسناد اسماء الجداول الى المتغيرات tb1 الى tb4 .. يعني ان tb1 هو الجدول teacher class والجدول tb2 هو جدول الفصل .. الخ Set tb1 = CurrentDb.OpenRecordset("teacher class", dbOpenDynaset) Set tb2 = CurrentDb.OpenRecordset("الفصل", dbOpenDynaset) Set tb3 = CurrentDb.OpenRecordset("بيانات المادة", dbOpenDynaset) Set tb4 = CurrentDb.OpenRecordset("بيانات المعلم", dbOpenDynaset) الكود بعد ذلك يقوم بالتأكد من احتواء جدولي tb3 و tb4 على بيانات .. فإن وجد فيهن بيانات عندها سيقوم بحذفها كلها .. الكود المسؤول عن هذه العملية هو If tb3.RecordCount <> 0 Then tb3.MoveFirst Do While tb3.EOF = False tb3.Delete tb3.MoveNext Loop End If If tb4.RecordCount <> 0 Then tb4.MoveFirst Do While tb4.EOF = False tb4.Delete tb4.MoveNext Loop End If بعد ذلك يتم حساب الصفوف والمراحل بالجدول 2 عن طريق هذا الكود tb2.MoveFirst sfofco = 1 sfof(1) = tb2![الصف] mrhla = tb2![المرحلة] Do While tb2.EOF = False If mrhla <> tb2![المرحلة] Then sfofco = sfofco + 1 sfof(sfofco) = tb2![الصف] mrhla = tb2![المرحلة] End If tb2.MoveNext Loop بعد ذلك يتم توزيع الصفوف والمراحل وعدد الحصص على عدد ايام الاسبوع في جدول بيانات المادة في الكود التالي For sf = 1 To sfofco tb1.MoveFirst Do While tb1.EOF = False For i = 3 To 100 Step 2 If tb1.Fields(i) = sfof(sf) Then tb2.FindFirst "[الصف] = " & "'" & sfof(sf) & "'" tb3.FindFirst "[الصف]=" & tb2![المرحلة] & " and [المادة] = '" & tb1.Fields(i + 1) & "'" If tb3.NoMatch = True Then tb3.AddNew tb3![الصف] = tb2![المرحلة] tb3![المادة] = tb1.Fields(i + 1) tb3![عدد الحصص] = 1 tb3.Update Else tb3.Edit tb3![عدد الحصص] = tb3![عدد الحصص] + 1 tb3.Update End If End If Next i tb1.MoveNext Loop Next sf واخيراً يتم توزيع المعلمين على ايام الاسبوع وعلى حسب المواد التي لديهم في الجدول عن طريق الكود التالي tb1.MoveFirst Do While tb1.EOF = False For i = 3 To 100 Step 2 tb4.FindFirst "[الفصل]='" & tb1.Fields(i) & "'" & " and [المادة] = '" & tb1.Fields(i + 1) & "'" & "and [رقم] =" & tb1.Fields(0) If tb4.NoMatch = True And IsNull(tb1.Fields(i)) = False Then tb4.AddNew tb4![رقم] = tb1.Fields(0) tb4![اسم المعلم] = tb1.Fields(1) tb4![الفصل] = tb1.Fields(i) tb4![المادة] = tb1.Fields(i + 1) tb2.FindFirst "[الصف]='" & tb1.Fields(i) & "'" tb4![الصف] = tb2![المرحلة] tb4.Update Else End If Next i tb1.MoveNext Loop ارجو ان يكون الشرح واضح .. اعتذر عن عدم تمكني من التفصيل اكثر لضيق الوقت ولان الكود طويل نوعا ما فارجو السماح
    1 point
  22. السلام عليكم ورحمة الله ... اخواني انا عندي 3 قاطرات بدي ورقة اكسل لحساب مصروف الوقود بهاي القاطرات او اكسس وبتمنى تساعدوني بسرعة ... وبكون الكن ممنونة والكن من الدعاء ..
    1 point
  23. الحلقة الرابعة عشر ***************** السلام عليكم ورحمة الله وبركاته وحشتكم !! أكيد لا .. لأني لو وحشتكم كنتو فتحتوا الباب وسألتوا عليا .. عموما إنتو وحشتوني ، وعشان وحشتوني هاقدم لكم حلقة جديدة يمكن تفتكروني. النهاردة هتكلم عن حاجة ناس كتير شرحوها ، وشرحوها بشكل ممتاز ، ودا خلاني مش عارف أشرح إزاي ، لأن اللي شرحوها وفوا شرحها صراحة .. هنتكلم عن الحلقات (بس مش حلقات افتح الباب) الحلقات اللي هنتكلم عنها الحلقات التكرارية ، ومن اسمها هي عبارة عن حلقات بتتكرر (إضافة عظيمة!) اسمها بالإنجليزي Loops ودي مهمة جداً في عالم الأكواد ، محدش يقدر يستغنى عنها تقريباً .. نفترض إني دخلت الفصل (بما إني معلم) ولسه دي أول مرة أتعرف على الطلبة اللي في الفصل ..يا ترى أنا عندي استعداد أخلى طالب طالب يقوم وأنا أقوله قول اسمك والطالب اللي بعديه قول اسمك .. أعتقد إن ريقي هينشف ودماغي هتصدع ودا طبعا مش يرضيكم (مش كدا ولا ايه) ..أنا من النوع الكسول فكل اللي هعمله هعمل تكرار من أول طالب في الفصل لآخر طالب ، وأعطي الأمر مرة واحدة .. من أول طالب إلى آخر طالب قووووول اسمك يا حبيبي الطالب التالي هو دا شكل الحلقة التكرارية .. نبرمجها بلغة الـ VBA ... هنقول إن الفصل فيه 60 طالب (معلش دا واقع الفصول في مصر) .. نقطة مهمة مننساش إن الطالب متغير مش ثابت ، فنرمز للطالب المتغير بالرمز X مثلاً ... Sub Loops() Dim X As Long For X = 1 To 60 'Say your name Next X End Sub طبعاً الكود دا شوية له علاقة بالبرمجة وشوية هتش .. ايه اللي هنعمله ..زي ما اتعودنا (دايما) إننا نعرف المتغير .. ونركز في السطر الثاني بدأ بكلمة For متبوعة باسم المتغير اللي هو X وبعدين علامة يساوي عشان نحدد قيمة X المتغيرة (أو الطالب المتغير) وهنا القيمة ليها بداية وليها نهاية (كل شيء له بداية ونهاية) وبيفصل بين البداية والنهاية حرف الجر To وفي آخر الحلقة التكرارية جملة Next X وممكن نقول Next ونسكت ، ومحرر الأكواد هيفهم لوحده .. بس أنا تقليدي شويتين فخلينا نكتب المتغير ، عشان الكود ممكن يكون فيه أكتر من حلقة تكرارية .. الجزء المهم هو الجزء اللي بين السطرين ، وهو دا الأمر المطلوب تكراره ، السطر اللي هنا مجرد تعليق وهتش وملوش علاقة بالبرمجة .. بس حبيت أقرب لكم الفكرة بأسلوب جديد.. كدا لما أنفذ الكود اللي فات ، كل اللي عملته إني أعطيت الأمر مرة واحدة وبس (وأنا حاطط رجل على رجل ... الدورة تلف على طالب طالب ، ويقول اسمه ، ولما يخلص ، الدورة تنتقل للطالب اللي بعديه وهكذا إلى أن ينتهي الطلاب ، ولما الـ 60 طالب يخلصوا ..يتم إيقاف تنفيذ الكود... ناخد أول مثال بجد عشان نقدر نتعلم إزاي نستفيد من الحلقات التكرارية :: لنفترض أننا عايزين نرقم النطاق A1:A10 بالأرقام من 1 إلى 10يعني الخلية A1 = 1 والخلية A2=2 وهكذا ..طبعا الموضوع بسيط جدا Sub NumberRange() Range("A1").Value = 1 Range("A2").Value = 2 Range("A3").Value = 3 Range("A4").Value = 4 Range("A5").Value = 5 Range("A6").Value = 6 Range("A7").Value = 7 Range("A8").Value = 8 Range("A9").Value = 9 Range("A10").Value = 10 End Sub كود في منتهى الروعة .. شايف حسام بيضحك ويقولي عايزك ترقم النطاق من A1:A100 (وابتسم ابتسامة فيها شماته !!) نفكر شوية .. بقول نفكر شوية (بلاش تكمل الحلقة غير لما تبص في الكود وتفكر شوية .. فكر شوية واكسب التوفير في الوقت والجهد) ايه المشترك في أسطر الكود .. وايه المختلف .. المتشابه في كل الأسطر Range("A ").Value = والمختلف هو الرقم بعد حرف الـ A ، والقيمة اللي بعد علامة يساوي .. في السطر الأول الرقم اللي بعد حرف الـ A هو 1 ، والقيمة بعد علامة يساوي بردو 1 ، ونفس الكلام مع السطر رقم 2 ، ورقم 3 وهكذا يبقا أول حاجة تفكر فيها إنك المختلف أو المتغير أو الشيء الغير ثابت تضعه في متغير ، ودا لأنه مش ثابت ومتغير .. فنضع متغير باسم X مثلاً ونعمل حلقة تكرارية من 1 إلى 10 (دي القيم اللي هيحملها المتغير) Sub NumberRange() Dim X As Long For X = 1 To 10 Range("A" & X).Value = X Next X End Sub نفس الكود اللي شرحناه من شوية ، الاختلاف في السطر اللي بين سطري التكرار .. الحلقة هتدور 10 مرات ، وفي كل مرة المتغير X بيحمل قيمة مختلفة (نرررررركز في الجزئية اللي جاية لأنها مهمة جداً جداً ) مش هنفذ الكود مرة واحدة .. سنقوم بعملية التنفيذ واحدة واحدة ، اللي مستعجل يروح ينفذ الكود مرة واحدة ، واللي مش مستعجل أنا معاه ..عشان يعرف حاجة مش هيعرفها الأخ المستعجل ... ضع مؤشر الماوس في أي مكان في الكود .. جميل >> اضغط F8 من لوحة المفاتيح ، وجمد قلبك وقول يا رب .. لاحظت ايه يا عبد المحسن؟ عبد المحسن ناااااااام مني (الله يسامحك) ..عبد المحسن : شايف الدنيا صفرا ليه ، هو فيه عاصفة النهاردة كمان؟ .. رديت عليه : لا يا عبد المحسن كمل نومك ، السطر الأصفر اللي ظهر ده سببه إننا ضغطنا F8 .. ودا فايدته إننا هنقوم بعملية التنفيذ واحدة واحدة .. سطر سطر .. السطر الأصفر على أول سطر في الكود Sub NumberRange() اضغط F8 مرة تانية ، ايه اللي حصل انتقل السطر الأصفر للسطر التالت ، طيب والسطر التاني يا معلم .. ملوش لازمة !!! أكبر خطأ إنك تعتقد إنه ملوش لازمة ، لما ضغطنا F8 للمرة التانية ، محرر الأكواد خزن في الذاكرة كل المتغيرات الموجودة في الكود عايز تتأكد من كلامي ، حرك مؤشر الماوس اللي على شكل حرف I (فيه شرطة فوق وشرطة تحت) حرك الماوس من غير ما تدوس كليك .. واقف على المتغير X هتلاقي تلميح في مستطيل صغير بيقولك المتغير X=0 ، دي كدا القيمة المبدئية للمتغير ... لما تضغط F8 للمرة التالتة ، روح شوف قيمة X مرة تانية هتلاقي قيمة X=1 (ايه اللي خلاها 1 مش كانت صفر من لحظة ) اللي حصل إننا انتقلنا من السطر For X = 1 To 10 والسطر دا هيبدأ في عمل الحلقة التكرارية اللي بنقول عليها ، والحلقة بدايتها 1 زي ما حددنا (وطبعاً ممكن نغير نقطة البداية يا شباب .. مش شرط 1) حرك مؤشر الماوس من غير ما تدوس على المتغير X في السطر المظلل بالأصفر Range("A" & X).Value = X هنلاقي زي ما قلت إن X =1 يعني محرر الأكواد هيعمل ايه دلوقتي ، هيشيل كل X ويحط مكانه القيمة 1 ، فيصبح السطر في الذاكرة بهذا الشكل Range("A1").Value = 1 لحد كدا تمام التمام ، صغر محرر الأكواد بحيث تكون ورقة العمل ظاهرة بالنسبة لك واتأكد إن النطاق A1:A10 فارغ ليس به أي بيانات ، وركز في ورقة العمل ، واضغط F8 عشان تنقل السطر الأصفر إلى هذا السطر ، ولاحظ ورقة العمل Next X لاحظت يا منصور الخلية A1 وضعت فيها القيمة 1 ، نخلي بالنا إن السطر الأصفر بيتم تنفيذه بعد الخروج منه ، فلما خرجنا من السطر تم تنفيذ الأمر وأعطى القيمة 1 للخلية A1 .. اضغط F8 مرة أخرى ، ونلاحظ إن السطر الأصفر انتقل للسطر اللي قبليه ، مش لبداية الحلقة التكرارية ، يعني ببساطة السطر اللي بيحدد بداية الحلقة ونهايتها بيعدي عليه مرة واحدة فقط .. أما سطر الأمر والسطر اللي فيه كلمة Next بيبدل السطر الأصفر عليهم... نبص دلوقتي على قيمة المتغير X هنلاقيها بقت 2 فيتم تنفيذ السطر بمجرد الضغط على F8 ويضع القيمة 2 في الخلية A2 وهكذا ..جرب واضغط F8 وفي كل مرة شوف قيمة المتغير X وشوف النطاق A1:A10 في كل مرة أول ما توصل قيمة المتغير X إلى الرقم 10 تتوقف الحلقة التكرارية ، وينتقل السطر الأصفر لجملة End Sub .. وينتهي عمل الكود .. عارف إني طولت في النقطة اللي فاتت ، بس كان لازم أطول فيها ، عشان أنا فاضي ومفيش ورايا شغل ، فقلت أصدعكم شوية!! ننتقل لمثال آخر --------------- عشان نقدر نفهم إزاي نستفيد من الحلقات التكرارية .. عايزين نعد الاسم (أحمد) في النطاق A1:A10 نفترض إني عندي الأسماء دي في النطاق A1:A10 أحمد ياسر سليم حسام عيسى أحمد أحمد خليل عبد الله أحمد المطلوب : نشوف الاسم (أحمد) كم مرة تم تكراره .. المعطيات : استعن بالله ثم بالحلقة التكرارية .. الفكرة : هنعمل اختبار صغير بقاعدة IF وهنقول لو قيمة الخلية بتساوي "أحمد" .. زود المتغير Counter بقيمة واحد Sub CountName() Dim X As Long Dim Counter As Long For X = 1 To 10 If Range("A" & X).Value = "أحمد" Then Counter = Counter + 1 Next X MsgBox Counter End Sub عملنا متغير جديد باسم Counter عشان لما يتحقق الشرط ويلاقي الاسم "أحمد" يقوم يخلي المتغير Counter يساوي نفسه + 1 طيب ليه يساوي نفسه ، عشان في كل مرة يلاقي أحمد قيمته هتتغير فلازم نضيف واحد لكل Counter جديد النتيجة في الآخر هتظهر في رسالة ، وهي 4 .. طيب نجرب نشيل الواحد في هذا السطر Counter = Counter + 1 لو شيلنا الواحد هتكون النتيجة 0 ، لأن المتغير قيمته المبدئية صفر ، فلما يتحقق الشرط مش هيزيد المتغير إلا لما نضيف واحد في كل مرة يتحقق الشرط. هناخد مثال آخر ---------------- عندنا درجات في النطاق A6:A15 ، عايزين نكتب ناجح أوراسب في الخلية المجاورة للدرجة ، لو الدرجة أكبر من أو يساوي 50 يبقا ناجح ، مكانش يكون راسب ... نخلي بالنا أنا غيرت بداية النطاق عشان الحلقة التكرارية بردو هتتغير بدايتها ونهايتها طبقاً للصفوف الجديدة 58 41 88 40 50 40 98 94 60 35 نجرب الكود التالي .. Sub LoopsTest() Dim X As Long For X = 6 To 15 If Cells(X, 1).Value >= 50 Then Cells(X, 2).Value = "ناجح" Else Cells(X, 2).Value = "راسب" End If Next X End Sub نلاحظ الحلقة التكرارية بدأت من 6 إلى 15 (ودا متغير للصفوف من الصف رقم 6 إلى الصف رقم 15) ووضعنا الشرط بين سطري الحلقة التكرارية ، لو الخلية اللي في الصف X والعمود الأول أكبر من أو يساوي 50 يقوم يعمل ايه؟ يضع القيمة النصية "ناجح" في الخلية اللي في العمود الثاني والصف X (نفس الصف بالطبع لأن قيمة X في الحالة دي هي هي نفس القيمة لأننا في نفس اللفة) .. إذا لم يتحقق الشرط قام بتنفيذ الجزء الثاني بأن يكتب النص "راسب" ثم إغلاق جملة IF بالجملة End IF ومننساش القفلة زي ما اتعودنا.. ننتقل لآخر مثال في الحلقة دي (عشان أنا تعبت وإنتو كمان أكيد تعبتو) في الأمثلة اللي فاتت عملنا حلقات تكرارية للصفوف .. واحد بيقولي طيب والأعمدة ملهاش نصيب في الدوخة اللي إحنا فيها دي .. أقوله أكيد ليها نصيب .. المطلوب إننا في الصف الرابع ، نكتب معادلة =COLUMN() بس في الأعمدة من العمود رقم 1 إلى العمود رقم 15 (A To O) نعقدها شوية ونقول في الأعمدة اللي رقمها فردي بس (الأعمدة اللي رقمها زوجي مش محتاجينها) يعني ببساطة عايزين نحط المعادلة في الأعمدة A C E G I K M O Sub ColumnsLoop() Dim X As Long For X = 1 To 15 Step 2 Cells(4, X).Formula = "=COLUMN()" Next X End Sub الحلقة التكرارية بدأت من العمود الأول حتى العمود رقم 15 (البداية والنهاية) معلومة جديدة Step 2 (دي معناها إننا هنقفز ..والقفز هيكون بمقدار 2 أي خطوتين) بدأنا بـ 1 فلما نقفز بمقدار 2 ، هنروح لرقم 3 ، أي أن المتغير سيكون رقم فردي في كل مرة 1 ، 3 ، 5 ، 7 ، 9 ، 11 ، 13 ، 15 (وهو دا المطلوب بالضبط) سطر الأمر فيه الخاصية Formula ودي عشان نقدر نضع معادلة من خلالها .. والمعادلة ببساطة زي ما شفناها من شوية بس بتكون بين أقواس تنصيص .. طيب الجزء الأول من السطر نلاحظ إننا استخدمنا Cells ودي بتكون متبوعة بقوسين ، وبين القوسين رقم الصف ثم فاصلة ثم رقم العمود ، وبما إن رقم الصف ثابت اللي هو رقم 4 ، فكتبناه زي ما هو .. اما رقم العمود فمتغير فوضعنا رقم العمود X ... جرب الكود وشوف النتيجة بنفسك أرجو أن أكون قد وفقت في توصيل المعلومة بأسلوب مبسط كان معكم أخوكم أبو البراء من تراك أوفيسنا (لف على الحلقات من الحلقة رقم 1 إلى الحلقة رقم 14 .. لو عايز تتعلم الـ VBA) ويا رب ميكونش فيه حد جاله دووووووووخة من كتر اللف .. والله أنا اللي دوخت أستودعكم الله .. دمتم في رعاية الله تقبلوا تحياتي .. دمتم بود
    1 point
  24. بعد إذن أساتذتي العظام هذا هو المطلوب مجمع وكله من فيض علم أساتذتي الذي خطوت علي يديه أولي درجات تعليم الأكسيل ( عبد الله المجرب ) وأستاذي ومعلمي ( رجب جاويش ) وأخي وأسناذي الرائع (أبو حنين ) كود خروج.rar
    1 point
  25. ألف شكر أخ التقنى على تثبيت الموضوع و الحقيقة أننى أيضاً تعلمت طريقة اخرى من الأخت و الأستاذة زهرة أيضاً تعمل بكفاءة و احب ان أفيد بها الزملاء فى منتدى اوفيسنا و هى كالتالى : تقوم بعمل وحدة نمطية module تضع فيها هذا الكود : Global Const SW_HIDE = 0 Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long Function fSetAccessWindow(nCmdShow As Long) Dim loX As Long Dim loForm As Form loX = apiShowWindow(hWndAccessApp, nCmdShow) End Function ثم فى النموذج الأساسى الذى يبدأ عند فتح قاعدة البيانات قم بوضع هذا الكود فى صفحة اكواد vba Private Sub Form_Open(Cancel As Integer) fSetAccessWindow (SW_HIDE) End Sub ثم بعد ذلك نقوم بتغيير خصائص كل النماذج و التقارير الموجودة فى قاعدة البيانات بحيث أنة فى التبويب الكل أو (all) أبحث عن منبثق أو popup و إجعلة نعم أو yes ثم تحتة مباشرة شكلى او مشروط modal و إجعلة نعم أو yes ثم تحتة مباشرة نمط الحوار border style إجعلة مربع حوار او dialog و كما قلت هذا فى كل التقارير و النماذج اهم شئ ضع زر إنهاء للأكسيس فى الفورم بحيث تقوم بإغلاق البرنامج منة لكى لا يبقى الأكسيس عالقاً فى الذاكرة و أخيراً فى كل التقارير ضع الكود التالى فى صفحة اكواد vba Private Sub Report_Open(Cancel As Integer) DoCmd.Maximize End Sub و ذلك لكى يعمل التقرير بملئ الشاشة و ذلك عند عرض التقرير و مرفق مثال على هذا من عمل الاخت زهرة و تحياتى للجميع Hide_Access2003.rar
    1 point
×
×
  • اضف...

Important Information