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

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

  1. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      10

    • Posts

      9,814


  2. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      3

    • Posts

      12,206


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

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

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


    • نقاط

      3

    • Posts

      13,165


  4. محمد التميمي

    محمد التميمي

    04 عضو فضي


    • نقاط

      1

    • Posts

      634


Popular Content

Showing content with the highest reputation on 23 يون, 2018 in all areas

  1. وعليكم السلام السطر الاخضر اللي فوقه يخبرك عن المكتبة اللي يجب اختيارها لعمل الكود جعفر
    2 points
  2. وعليكم السلام تفضل ، جرب هذا التعديل: Private Sub cmd_Do_The_Changes_Click() 'make Reference to Microsoft DAO x.xx Object Library Dim rst As DAO.Recordset Dim biggest_Number As Long Dim i As Integer Dim j As Integer Dim RC As Integer Dim Multiply_by As String biggest_Number = Len(DMax("[ID]", "Data")) 'what number to multiply with Multiply_by = 1 For i = 1 To biggest_Number Multiply_by = Multiply_by & "0" Next i 'we have to do this in two steps: '1 based on the Biggest Number, lets multiply it by 10, so that No number id duplicated '2 then Seq based on the required Seq '1 Set rst = CurrentDb.OpenRecordset("Select * From Data") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC 'change the existing numbers to BIGGER NUMBERS rst.edit rst!ID = rst!ID * Val(Multiply_by) rst.Update rst.MoveNext Next i '2 rst.MoveFirst For i = 0 To RC - 1 'change the BIGGER NUMBERS to the new Seq rst.edit rst!ID = Me.int_Start + i rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing MsgBox "Done" End Sub جعفر 927.1.Access2.accdb.zip
    2 points
  3. أولاً هذا هو الرابط للمشاهدة الحية رقم الجلوس 1 من هنا الخطوات بقى ودى الأهم أول خطوة عمل ملف إسمه ntiga بإمتداد xml يحتوى على نتيجة الطلاب بالمواد والدرجات ورقم الجلوس وهذا الملف يتم عمله بخطوات معينة كالتالى 1. عمل النتيجة بملف إيكسيل وبه كل البيانات مسلسل ( يفضل أن يكون المسلسل هو رقم الجلوس ) و الإسم ورقم الجلوس و درجات المواد المختلفة ونتيجة الطالب 2. فتح برنامج الأكسيس وتصدير ملف الإيكسيل إليه كجدول 3. تصدير الجدول من ملف الأكسيس إلى ملف بإمتداد xml ثانى خطوة تصميم فلاش إسمه ntiga أنا شخصياً إستخدمت إمتداد فلاش SWF ويكون الفلاش مناسب للداتا المراد وضعها فى النتيجة أى يحتوى على إسم المدرسة ومكان لوضع رقم الجلوس ومكان لظهور الداتا التى ستكون نتيجة الطالب الذى يضع رقم جلوسه وأنا شخصياً إستخدمت برنامج الإيكسيل لتصميم هذا الفلاش مستخدما برنامج الأخ الفاضل والاستاذ الخبير أبو تامر لأخذ الصور للتصميم من ملف الإيكسيل ثالث خطوة عمل ملف إسمه ntiga بإمتداد HTML وهذا لفتح الفلاش على النت للمستخدم الذى يريد رؤية نتيجته وأثناء العمل على الكومبيوتر أثناء إعداد برنامج النتيجة سيتم ربط ملف الفلاش بملف الHTML وعندما يتم الرفع لن تكون هناك مشكلة فى رؤية الفلاش الاصلى حتى لمن لا يكون على جهازه برنامج عرض الفلاش فمتصفح الإنترنت فى هذه الحالة سيتمكن من عرض الفلاش رابع خطوة عمل مجلد إسمه ntiga ووضع فيه الثلاث ملفات السابق شرحها فى الخطوات من 1 إلى 3 خامس خطوة إستئجار مكان لإستضافة النتيجة ويكون ذلك بمبلغ حسب حجم الداتا وفى حالتنا هنا فمساحة 5 ميجا تكفى لرفع نتيجة أكثر من 3000 طالب وقد تكلف 100 جنيه سنوياً حسب اسعار مواقع الإستضافة ولكن شرط أن يكون الموقع يدعم إستضافة قواعد البيانات يمكن إستخدام أحد المواقع المجانية ولكن فى هذه الحالة يمكن أن يختفى موقعك فجأة ودون سابق إنذار كما سيتم عرض إعلانات لا تتحكم فيها على موقعك ثم رفع المجلد الذى إسمه ntiga على الموقع المذكور سادس خطوة نسخ عنوان ملف الـ html من الموقع الخاص بك المستأجر أو المجانى وهذا العنوان هو الذى سيستخدمه من يريد رؤية نتيجته ويتم ذلك بالطريقة التالية 1. الدخول على اللينك ستظهر رسالة التعريف بإسم المدرسة وبها مستطيل يضع به الطالب رقم جلوسه ثم يضغط إنتر من الكى بورد 2. ستظهر له رسالة إدخال خاطئ سريعة ولن تظهر له درجات لو كان الرقم غير صحيح 3. لو أدخل رقم جلوس صحيح ستظهر له نتيجته بالتفصيل وفى إنتظار آرائكم وأنا تحت أمركم جميعاً مرة أخرى هذا هو لينك التجربة ورقم الجلوس 1 من هنا إخوانى الأعزاء خالص الشكر للأخ محمد العجوز من سوريا وقد إستفدت كثيراً من طريقة رفعه لنتيجة طلاب جامعة الفرات
    1 point
  4. هدية : اكواد اكسس السلام عليكم ورحمة الله وبركاته اليكم هذه الهدية الصغيرة الحجم وكبيرة المنفعة ( باذن الله ) راح يساعدكم في عملكم http://codevba.com/ وهذه صورة لشريط الاكواد وهذه هو الملف codevba.zip وشكرا لاستاذنا جعفر على ادراج الرابط لكي لا يخالف الملكية الفكرية
    1 point
  5. تفضل ، جرب هذا المرفق جعفر 918.5.‏‏‏‏برنامج المخــــــــــزون - - نسخة.mdb.zip
    1 point
  6. الله يطول عمرك اخوي ابو زاهر انا كنت اريد برنامجك اللي فيه البيانات متكررة ، واريد مجموعة منها ، انا ما اريد ان ادخل البيانات ، وانما اريدك انت ان تدخل البيانات بالطريقة الصحيحة جعفر
    1 point
  7. السلام عليكم مؤقتا و حتى أجد حلا استبدلت ال dao ب ال ado الكود لمن يريده Set db = CurrentDb Set rs = db.OpenRecordset("select * from tblmain order by stunum") Set Me.Recordset = rs txtfind.ControlSource = "[" & rs.Fields(0).Name & "]" txtname.ControlSource = "[" & rs.Fields(4).Name & "]" txtqawmy.ControlSource = "[" & rs.Fields(3).Name & "]" txtqaydn.ControlSource = "[" & rs.Fields(18).Name & "]" txtfn.ControlSource = "[" & rs.Fields(12).Name & "]" txtmn.ControlSource = "[" & rs.Fields(15).Name & "]" txtwn.ControlSource = "[" & rs.Fields(20).Name & "]" txtmelad.ControlSource = "[" & rs.Fields(25).Name & "]"
    1 point
  8. اها ، ما قرأت كل الكود الظاهر يجب ان تعمل connection للجداول قبل خطوة إضافة السجل ، لأن الكود اعلاه يغلق الاستصال بعد الكود ، فكل اللي تقوم فيه من بيانات وسجل سابق ولاحق ، هي موجودة في Recordset الذي جلبته من البيانات قبل اغلاق الاتصال. Ado فيه اتصال وقطع اتصال ، وهذا الذي استعملته انت ، بينما Dao مافيه قطع اتصال ، جعفر
    1 point
  9. وعليكم السلام طبعا ما بيقبل الامر Docmd.gotorecord,,acnewrecord لأن النموذج عندك غير مضمن (اي غير مرتبط بجدول) يجب عليك إضافة سجل عن طريق Recordset مباشرة: adorec.addnew ..... إضافة بيانات الحقول في الجدول adorec!ID = 5 adorec!Name = "جعفر" ..... adorec.update . جعفر
    1 point
  10. وعليكم السلام عمل استعلامات 4 ، كل استعلام بمعيار ، هو اسهل الطرق ، 2. هاي الاسهل ، عمل ملف اكسيل لكل استعلام: تعمل استعلامات لكل نوع من الشروط اللي ذكرتها اعلاه ، والكود التالي لعمل ملفين: DoCmd.OutputTo acOutputQuery, "Q1", acFormatXLS, "D:\Temp\File1.xls", False DoCmd.OutputTo acOutputQuery, "Q2", acFormatXLS, "D:\Temp\File2.xls", False او DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Q1", "D:\Temp\File1.xls", True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, "Q2", "D:\Temp\File2.xls", True . 1. اذا اردت ان ترسل الاستعلامات الاربع ، وتحفظ كل واحد في صفحة مستقلة ، فالبرنامج هذا يفيدك: . وتقدر برمجيا تدخل في كود البرنامج اعلاه ، وترسل الاربع استعلامات جعفر
    1 point
  11. اذا المسألة فيها امثلة فالافضل ان تكون المسألة احترافية لذا يمكننا الاستعانة باحد برامج التحزيم (نضمن داخله قاعدة البيانات) وسوف يقوم بالمهمة بصمت و على اكمل وجه واعتقد ايضا برنامجي ضغط الملفات ( Rar أو Zip ) يقومان بهذه المهمة ولكني لم استخدمهما من قبل مثالي الذي سأرفقه سأستعين بــــ برنامج تحزيم
    1 point
  12. طيب اتبع الطريقة المعتادة او التقليدية : التقليدية ان المستخدم يلصق القاعدة الجديدة في المجلد ويوافق على الاستبدال المعتادة : ان ترسل ملف القاعدة الجديدة وبجانبه ملف تنفيذي مساعد وكل الذي سيعمله المستخدم هو نقرة واحدة على الملف المساعد يتم من خلالها الاستبدال . ولا يوجد محاذير في الطريقة الثانية مهما كان عدد النقر على الملف المساعد
    1 point
  13. وعليكم السلام هل تستطيع ادخال بيانات الموظف الجديد بدل بيانات القديم دون الحاجة لحذف السجل لكونك تستخدم الترقيم التلقائي واذا تعذر عليك الحل ارفق مثال ليتسنى لنا مساعدتك
    1 point
  14. تفضل تم اصلاح الخل .. لاحظ الفرق بين هذا السطر و السطر الموجود في مثالك : For M = 1 To MOALEM![الاحد] And MOALEM![الاثنين] And MOALEM![الثلاثاء] And MOALEM![الاربعاء] And MOALEM![الخميس] توزيع الحصص2.rar
    1 point
  15. وعليكم السلام رجاء اخذ نسخة اضافية من بياناتك قبل العمل الطريقة التي عملتها هي: تغيير الارقام الى ارقام كبيرة غير موجوده في القائمة ، ثم تغيير الارقام الى التسلسل المطلوب تفضل . والكود خلف الزر: Private Sub cmd_Do_The_Changes_Click() 'make Reference to Microsoft DAO x.xx Object Library Dim rst As DAO.Recordset Dim biggest_Number As Long Dim i As Integer Dim j As Integer Dim RC As Integer Dim Multiply_by As String biggest_Number = Len(DMax("[ID]", "Data")) 'we have to do this in two steps: '1 based on the Biggest Number, lets multiply it by 10, so that No number id duplicated '2 then Seq based on the required Seq '1 Set rst = CurrentDb.OpenRecordset("Select * From Data") rst.MoveLast: rst.MoveFirst RC = rst.RecordCount For i = 1 To RC 'what number to multiply with Multiply_by = 1 For j = 1 To biggest_Number - Len(rst!ID) Multiply_by = Multiply_by & "0" Next j 'change the existing numbers to BIGGER NUMBERS rst.edit rst!ID = rst!ID * Val(Multiply_by) rst.Update rst.MoveNext Next i '2 rst.MoveFirst For i = 0 To RC - 1 'change the BIGGER NUMBERS to the new Seq rst.edit rst!ID = Me.int_Start + i rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing MsgBox "Done" End Sub . وبسبب وجود علاقة بين الجدولين Data و tell عن طريق الحقل ID ، فلما الكود يغير قيمة الحقل ID في الجدول Data ، فتلقائيا نجد ان القيمة قد تغيرت في الحقل ID في الجدول tell . جعفر 927.Access.accdb.zip
    1 point
  16. الف الف شكر استاذي الفاضل جعفر هذا هو المطلوب والشكر طبعا لاستاذي الفاضل alaa aboul-ela الف الف شكر استاذي الفاضل علاء ولك مني جزيل الشكر علي زوقك وسعة صدرك وجزاك الله خيرا
    1 point
  17. السلام عليكم ورحمة الله وبركاته كيف حالكم إخواني الكرام في المنتدى الغالي؟ لقيت نفسي نفسي (نفسي الأولى غير التانية ..) نفسي الأولى يعني أنا - وأعوذ بالله من كلمة أنا - ، ونفسي التانية يعني حاجة أتمنى أعملها .. المهم لقيت نفسي أعمل حاجة مختلفة .. بشكل مختلف .. بأسلوب مختلف يكون فيه عنصر التشويق والإثارة والبساطة مجتمعين في نفس الوقت. كتير مننا أول ما يسمع كلمة البرمجة والأكواد يتخض وكأن الموضوع مستحيل ...أبدا كل الحكاية إننا بنبدأ غلط مش بناخد الخطوات الصحيحة لتعلم البرمجة. لو عايز تتعلم البرمجة ونفسك بجد تبدأ تتمكن فيها خليك معايا ، هنقضيها رغي شوية وهزار شويتين ، وجد مش كتير ... ايه رأيكم؟ نبدأ على بركة الله .. أول حاجة بعد ما تنصب الأوفيس وتفتح الإكسيل تلاقي اللي انت عايزه مش موجود طيب نظهره إزاي ؟؟ ببساطة فيه زر أوفيس فوق شمال هتضغط عليه وتضغط Excel Options هتلاقي نافذة فيها خيار اسمه Show Developer tab in the Ribbon يعني إظهار التبويب ، وهتلاقي جنبه مربع تحط فيه علامة صح مبروك الخطوة الأولى واحد هيقولي عندك اقف أول خطوة فشلت فيها ..هقوله ربنا ما يحرمنا من الفشل لأن الفشل أول طريق النجاح .. هقولك لو ملقتش اللي بحكي عليه يبقا اصدار الأوفيس مختلف أنا شغال على 2007 ، وحضرتك على 2010 أو 2013 (بالنسبة ل 2003 والله ما أنا معبره كفاية عليه لحد كدا) ... بالنسبة لـ 2010 و 2013 بيكون من قائمة File ثم Options ثم من القايمة الشمال فيه Customize Ribbon وفي الناحية اليمين هتلاقي قائمة بالتبويبات وجنب كل تبويب علامة صح اللي يعجبك علم عليه صح واللي ميعجبكش ارميه في الزبالة... المهم هتلاقي التبويب اللي هيفتح لنا الباب لعالم البرمجة .. دا كان المفتاح للدخول نخش لتاني حاجة المفتاح عشان يفتح معاك لازم تحط عليه شوية زيت ، يعني لازم تضبط إعدادات الماكرو عشان الأكواد تشتغل معاك تمام من التبويب الجديد انقر على Macor Security هيفتح معاك نافذة بتختار منها آخر خيار Enable all macros وبتعلم علامة صح على الخيار اللي جنبه مربع Trust access to VBA الحمد لله خلصنا من النقطة الأولى والتانية ... ننتقل لنقطة جديدة : هيظهر التبويب في الآخر .. جمد قلبك واشرب ديو وافتح الباب لمحرر الأكواد اضغط على Visual Basic من التبويب المذكور أو لو بتحب تتعامل مع الكيبورد اضغط Alt + F11 كدا الباب الحمد لله فتح .. لو أول مرة تدخل على محرر الأكواد متتخضش واحدة واحدة هبندا نتعلم كل اللي موجود .. المهم محدش يستعجلني عشان أنا مستعجل النافذة دي اسمها نافذة المشروع Project window يعني الإكسيل بيتعامل مع المصنف إنه مشروع .. والمشروع مكون من 3 شيتات اللي بنسميهم أوراق العمل Sheet1 و Sheet2 و Sheet3 بس في 2013 الحمد لله بيكون الوضع الافتراضي شيت واحد بس (أصلي بتخنق من حتة 3 شيتات ع الفاضي بحس إن الملف كبير ع الفاضي وكل اللي يلزمني للعمل بشكل مبدئي هو شيت ولما أحب أضيف جديد مش هيكون أمر صعب) المهم مع أوراك العمل بنلاقي الكائن المسمى بالمصنف WorkBook ودا اللي بيحوي التعابين كلها أقصد الأكواد .. طيب محدش سألني ايه المنطقة الرمادي دي ومالها ضلمة ليه كدا؟ أنا أقولك عشان إنت تنورها .. اضغط دبل كليك على Sheet1 مثلا في نافذة المشروع هتلاقيها نورت والحمد لله استعداد لبداية الاحتفال بس فيه نقطة الأكواد لو اتكتبت هنا هتأثر على الورقة دي بس ... في الحتة اللي نورت الصق الكود اللي جاي ده وأفضل تكتبه بايدك عشان أنا شايف ايدك بتترعش وخايف .. قلت لك جمد قلبك الموضوع بسيط نبدأ بكود كدا سهل ولذيذ Sub Hello_Officena() MsgBox "Hello Officena!" End Sub أول كلمة Sub يعني ابدأ صب اللي عندك .. لا غلط .. معناها إجراء فرعي Subroutine يعني بينفذ مهمة محددة. وفي آخر الكود End Sub عشان القفلة (لو فاكرين شعبان عبد الرحيم بيقول ايه في الآخر بس خلاص دي القفلة بتاعته) هنا بقا دي القفلة بتاعت الإجراء الفرعي.. طيب ايه Hello_Officena دا اسم الإجراء ودا له قواعد أول حاجة مينفعش يبدأ برقم 77Hello_Officena ولا ينفع يكون فيه مسافة زي كدا Hello Officena بس ممكن لو حبينا بدل المسافة بحط Underscore اللي هي بتيجي بـ Shift + العلامة اللي على يمين الصفر اللي في الأرقام اللي فوق مش الأرقام اللي ف لوحة الأرقام .. وبردو فيه حاجات محرمة في اسم الإجراء زي علامة # أو $ أو % أو & أو % أو النقطة أو الفاصلة أو أو .. بقولكم ايه كفاية كلام عن اسم الإجراء .. لو كان فيه حاجة غلط في الاسم هيطلع لك رسالة خطأ تعرف إن فيه حاجة مش مظبوطة!! طيب السطر اللي في النص دا هو دا الكود .. الإجراء أو المهمة المراد تنفيذها .. بتبدأ بكلمة MsgBox ودي اختصار للكلمة Message Box أي صندوق الاسم ..... والله انا سرحت بس مش همسح اللي بكتبه خلي الكلام يكون تلقائي .. ودي بنكتب وراها الرسالة اللي عايزين نظهرها .. وطبعا فيه مسافة بعد الكلمة والكلام اللي هو الرسالة دا نص فنحطه بين أقواس تنصيص " " .. واحد برق لي عينه بيقولي بتتعمل إزاي دي قول لأقتلك .. هقوله حاضر يا باشا هقولك دي بتيجي إزاي .. اضغط على Shift وبعدين حرف الطاء بس خلاص .. طبعا أقواس التنصيص في أول النص وفي آخره مهو لازم القفلة. نجرب نشغل الكود إزاي .. فيه أكتر من طريقة يا إما تضغط على مثلث لونه أخضر فوق في شريط الأدوات الموجود في محرر الأكواد .. مش عاجبك شكل المثلث الأخضر خلاص روح لقائمة Run واضغط أول أمر .. لو انت تلميذ ذكي هتعرف الطريقة التالتة من التانية .. هسيبكم تقولوها إنتو ..مش عارفين !! طيب هقول أنا وخلاص اضغط على F5 من لوحة المفاتيح بس بشرط يكون مؤشر الماوس واقف في الكود.. لما نشغل الكود دا اللي هيظهر لي وبكدا أكون وصلتكم وفتحت لكم الباب .. لو عايزين نكمل قولوا كمل مش عايزين .. يبقا كفاية لحد كدا ويا كود ما يقربش منك حد .. ونعمل بالمثل الفلاحي اللي بيقول : ابعد عن الكود وادعي عليه! والسلام عليكم سبحانك اللهم وبحمدك .. نشهد أن لا إله إلا أنت ..نستغفرك ونتوب إليك كان معكم على الهواء مباشرة أخوكم أبو البراء من ملعب أوفيسنا .. إلى اللقاء مع مباراة جديدة وأهداف جديدة وشيقة دمتم بود ====================================== ====================================== السلام عليكم نرجوا وضع ردود الشكر والاعجاب على الرابط ادناه هنا ====================================== ======================================
    1 point
  18. الحلقة العاشرة ************ السلام عليكم ورحمة الله وبركاته أقدم لكم اليوم حلقة كاملة الدالة MsgBox (وقد قدم لها الأخ الحبيب حسام عيسى موضوعاً كاملاً ، مما أخرني في تقديم الحلقة) .. عموماً هنتكلم عنها مرة تانية ، وفي الإعادة إفادة.. كلمة MsgBox اختصار للكلمة الإنجليزية Message Box أي صندوق الرسالة .. ودي وظيفتها إنك بتعرض رسالة للمستخدم تفيده بأمر معين .. لما نكتب الدالة MsgBox ، ونضغط مسطرة عشان ناخد مسافة ، بيظهر لنا مستطيل أصفر فيه توضيح لبارامترات الدالة .. كلها اختياري ما عدا البارامتر الأول اللي هو اسمه Prompt ، والبارامتر ده هو عبارة عن النص اللي هيظهر للمستخدم (وطبعاً مينفعش يكون اختياري وإلا مش هيكون فيه رسالة للمستخدم) بس إحنا ممكن نضحك على المحرر ، ونكتب السطر بالشكل ده : MsgBox "" هو كل اللي يهمه أقواس التنصيص .. هودا كل اللي يفهمه ، أما النص اللي بين أقواس التنصيص فدا ميعرفوش وميهموش ، اكتب أي كلام .. MsgBox "واخد على خاطري منكم" دي الرسالة اللي عايز أوصلها لكم أحبابي .. ودا سببه عدم المتابعة الجيدة للحلقات .. عموماً دا مش وقت للعتاب.. طيب واحد هيسأل : طيب كدا موضوع الدالة بسيط ومش محتاج حلقة ؟ أقوله البسيط هنعقده ، والمعقد هنبسطه .. تعالوا معايا نضع قيمة في الخلية D3 (كل اللي بيشرحوا مش عارف ليه مركزين على الخلية A1) أنا بحب التغيير - من باب خالف تعرف - ، وليكن القيمة 1500 عايزين نظهر القيمة الخاصة بالخلية في رسالة : MsgBox Range("D3").Value الرسالة هتظهر وفيها القيمة 1500 ، طيب ممكن نضيف عليها نص .. أكيد ممكن ! ليه لا! MsgBox "القيمة الموجودة يا أستاذ حسام في الخلية هي " & Range("D3").Value نلاحظ هنا إننا استخدمنا المعامل Concatenate اللي هو شكله & ، ودا وظيفته إنه بيدمج النصوص .. طبعاً القيمة اللي موجودة في الخلية D3 حتى لو كانت قيمة رقمية ، هنا مع دالة الرسالة مش بتشوفها رقم ، لكن بتشوفها نص (هنبص بعيون الدالة الجميلة) طيب ممكن نظهر قيمة خلية تانية .. أكيد ممكن ! ليه لا نضع القيمة 2000 في الخلية E4 ونجرب : MsgBox Range("D3").Value & Range("E4").Value هنلاقي إن قيمة الخلية D3 والخلية E4 لازقين في بعض ، دا لأنك مسبتش مسافة بينهم .. طيب المسافة هنعملها إزاي ؟ هو سؤال بسيط بس اعذروني أكيد فيه ناس بتسأله :: هنترك مسافة وبس .. لا .. هنعمل مسافة بالمسطرة بس بشرط تكون المسافة بين أقواس تنصيص زي كدا : MsgBox Range("D3").Value & " " & Range("E4").Value هنا نفس الكلام ربطنا بالمعامل & ، وعشان تكون المسافة مناسبة ضربت على المسطرة 3 مرات (معلش أصلي مضايق ومحتاج أضرب حد ، فملقتش غير المسطرة .. بس كفاية عليها 3 ضربات ..) واحد هيقولي أنا جربت الكود بس أنا مش عاجبني شكلهم جنب بعض ، ممكن نخلي كل قيمة في سطر .. أكيد ممكن ! ليه لا! MsgBox Range("D3").Value & vbNewLine & Range("E4").Value كلمة vbNewLine عشان نقدر ننزل لسطر جديد (وقلت قبل كدا بس محدش بيتابع إن فيه كلمة تانية بتؤدي نفس الغرض اسمها ايه يا شاكر؟ مش بقولكم محدش مذاكر .! اسمها vbCrLf ) يلا زيادة الخير خيرين .. وأضاف الأخ مختار كلمة جديدة أيضاً تؤدي نفس الغرض ألا وهي Chr(10) ربنا يسترها علينا وعليكم دنيا وآخرة. نشوف السطر ده : MsgBox ("الحمد لله الذي بنعمته تتم الصالحات") ايه الجديد يا أستاذ عبد المجيد ؟ الأقواس .. ممكن نستغني عنها ؟ آه ممكن .. ليه لا! .. بس الأقواس دي هنستفيد منها في إنك تخلي جملة MsgBox يمكن وضعها كقيمة في متغير (نصبر شوية هييجي الكلام عليها) .. طيب ايه هي الإضافات اللي نقدر نضيفها (هي زي البهارات حاجة كدا تحلي الأكله .. تخليها أحلى) ... إحنا قلنا البارامتر الأول خاص بالنص ودا إجباري (بس ممكن نخدع المحرر) ، البارامتر الثاني خاص بالأزرار Buttons .. الأزرار دي زي OK و Cancel و Retry وهكذا.. نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbOKCancel نلاحظ بعد نص الرسالة Prompt عملنا فاصلة , ودي عشان نقول للمحرر إننا هنضيف أزرار Buttons .. أول ما تعمل الفاصلة هتلاقي زي ما اتعودت قايمة فيها القيم اللي ممكن تستخدمها .. طيب لو نفذنا السطر اللي فات هنلاقي إن زر OK أو زر Cancel لو ضغطت عليهم مش هيحصل حاجة غير إنه يقفل الرسالة .. (قلنا نصبر هييجي عليها الكلام يا مستر عبد السلام) نتعرف على الأزرار الموجودة والمتاحة عندنا : vbAbortRetryIgnore vbOKCancel vbOKOnly vbRetryCancel vbYesNo vbYesNoCancel ممكن نجرب القيم دي ... القصة كلها في البادئة vb ثم الأزرار اللي هنستخدمها.. ننتقل لجزئية أخرى : مع نفس البارامتر الخاص بالأزرار ممكن نضيف رموز (علامة تعجب - علامة استفهام - ..) والرموز عشان نضيفها نضع علامة + بعد الأزرار التي سيتم استخدامها .. بالمثال يتضح المقال : MsgBox "هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion ممكن نتعرف على الرموز : vbQuestion vbInformation vbCritical vbExclamation طيب ممكن نستغنى عن الأزرار ونستعمل الرموز فقط ؟ أو ممكن نستغنى عن الرموز ونستعمل الأزرار فقط؟ أكيد ممكن ! ليه لا! (النهاردة واخدين حريتكم ..مفيش تقيد) هسيبكم شوية تجربوا الرموز دي ، وتشوفوا كل رمز شكله ايه؟ - فاصل ونواصل - واحد بعد ما شاف الرسالة ، لاحظ إن فيها عنوان Microsoft Excel فسألني ممكن أغير العنوان ده ؟ رديت عليه وقلت له (طبعاً عارفين الإجابة) عنوان الرسالة هو دا البارامتر التالت .. ود اسمه Title (ونلاحظ إن البارامتر لما يكون اختياري بيوضع بين أقواس بهذا الشكل [ ] ) نجرب السطر التالي : MsgBox "هل تحب حلقات افتح الباب؟", , "منتدى الأحبة" ايه دا بقا إنت عامل فاصلتين ليه؟ يا سيدي ما أنا قلت لك إن البارامتر التاني الخاص بالأزرار والرموز دي اختياري ، بمعنى يمكن الاستغناء عنه ، بس عشان نعديه لازم فاصلة ، وبعد الفاصلة فاصلة تانية ، يقوم المحرر يفهم إنك استغنيت عن البارامتر التاني ، ويشتغل على البارامتر التالت .. اللي هو عنوان الرسالة.. نجرب ونشوف ! ننتقل لأهم نقطة في حلقة اليوم ألا وهي تعيين الرسالة كمتغير ، عشان ببساطة ننفذ كود معين لو المستخدم اختار زر وننفذ كود تاني لو اختار زر تاني (أكيد الكلام يتوه ..خلينا في التطبيق) Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") نخلي بالنا إننا هنا هنستخدم متغير باسم Answer (ممكن تسميه بالاسم اللي يعجبك) ، والمتغير ده هيكون له قيمة (الرسالة مجرد ستارة .. والقيمة مخفية .. والقيمة دي هنعرفها حالاً) لو حبينا ننفذ كود معين في حالة اختيار معين ، هنستخدم الجملة If الشرطية ، يعني ببساطة لو المتغير Answer قيمتة كذا اعمل كذا ، ولو قيمته كذا اعمل كذا .. Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = vbYes Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = vbNo Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub أظن المثال واضح ، في حالة إذا كانت قيمة Answer تساوي vbYes ، هينفذ السطر التالي ويظهر رسالة بمحتوى معين ، ولو كانت القيمة vbNo هيظهر رسالة تانية .. واحد هيقولي هو كله رسايل رسايل مفيش شات .. طبعا الأسطر اللي هيتم تنفيذها مش شرط تكون رسالة ، دا مجرد مثال عشان تفهم كيفية استخدام المتغير .. لكن ممكن تنفذ مجموعة أسطر من الأكواد في حالة vbYes ، ومجموعة أسطر أخرى من الأكواد في حالة vbNo ... ركز وخلي بالك من الكود التالي : Sub Query() Answer = MsgBox("هل تحب حلقات افتح الباب؟", vbYesNo + vbQuestion, "منتدى الأحبة") If Answer = 6 Then MsgBox "كدا حبيبي وصاحبي وكفاءة" ElseIf Answer = 7 Then MsgBox "زعلت منك ..روح ربنا يسامحك" End If End Sub كلنا اللي عملناه شيلنا vbYes وحطينا رقم 6 ، وشيلنا vbNo وحطينا رقم 7 (ايه دا بقا ..طيب هنعرف منين اللي إنت بتقوله ده ..فيه جدول بقيمة كل زر من الأزرار .. يرجى عدم الحفظ) فيه حاجة مهمة نسيت أقول عليها : لو لاحظتو إن الرسائل كلها وعنوان الرسائل بتظهر ناحية اليسار ، عشان نخليها يمين (ربنا يجعلنا من أهل اليمين) نجرب الكود التالي : MsgBox "هل تحب حلقات افتح الباب؟", vbMsgBoxRight, "منتدى الأحبة" آخر جزئية هنتكلم فيها .. مش هنتكلم فيها (فيه ملف مرفق فيه توضيح لآخر جزئية .. أنا بس هشرح نقطة واحدة في الملف المرفق ، وإنتو إن شاء الله المولى هتفهموا الباقي) الأزرار والرموز اللي عدت علينا في الحلقة ، ممكن نستغنى عنها بقيم ..إزاي ؟ MsgBox "هل تحب حلقات افتح الباب؟", vbYesNoCancel ممكن السطر ده يكون بالشكل ده : MsgBox "هل تحب حلقات افتح الباب؟", 3 يعني القيمة 3 = vbYesNoCancel .. مثال تطبيقي : ------------ Sub Query() Dim Answer As String Answer = MsgBox("هل تريد الدخول لتطبيق الإكسيل لتطبيق الأكواد في حلقات افتح الباب؟", vbYesNoCancel) If Answer = vbYes Then MsgBox "تفضل بالدخول .. بيتك ومطرحك ، وإن شاء الله تستفيد" ThisWorkbook.Activate ElseIf Answer = vbNo Then MsgBox "أكيد مشغول عشان ناوي تقفل .. عموماً تصحبك السلامة وفي رعاية الله" ActiveWorkbook.Save Application.Quit End If End Sub وأخيراً أتمنى أن أكون قد وفقت في توصيل المعلومة لكم بشكل مبسط .. دمتم في رعاية الله .. MsgBox Values.rar
    1 point
  19. متابعة الواجبات : ************** قام الأخ الفاضل الجموعي بعمل الواجب المطلوب على أكمل وجه .. بارك الله فيك أخي الحبيب الجموعي وجزيت خيراً على هذه المتابعة الجيدة ممكن نستفيد معلومات جديدة من خلال الواجب مش هنصحح كدا ونقول صح ولا غلط وبس لا إحنا نضيف معلومة تضاف للحلقة الثالثة كملحق ليها . يا ريت المشرفين يقوموا بالمهمة دي .. عايز تجميع لكل الحلقات والملحقات للحلقات زي الملحق ده عشان يضاف للشرح لتسهيل المتابعة لمن أراد المتابعة بإذن الله . طبعا الكود اللي تفضل به أخونا الفاضل بالشكل ده Range("A1:B10").HorizontalAlignment = xlCenter Range("A1:B10").Font.Name = "Arial" Range("A1:B10").Font.Size = 14 Range("A1:B10").Font.Bold = True Range("A1:B10").Font.Color = -4165632 لو لاحطنا هنلاقي الأسطر الخمسة كلها بتبدأ نفس البداية ودا طبيعي لأن كل الشغل على نفس النطاق . ممكن تضيف لمعلوماتك إنك ممكن تستغنى عن تكرار هذه البداية باستخدام جملة With .... End With ومننساش بردو القفلة مهمة جدا نقطة تانية بالنسبة للون يمكن استبالها بقيمة vbBlue بدلا من الرقم اللي شكله يخض ده .. الأسطر كلها تحتوي على Properties أي خصائص وطبعا كل خاصية بيكون ليها قيمة ..ممكن تكون القيمة نص زي اسم نوع الخط Arial وطبعا مننساش إن النص يوضع بين أقواس تنصيص .. وقد تكون القيمة رقم زي حجم الخط ودا طبيعي لأن الحجم بيكون برقم (افتكروا التلاجة الـ 10 قدم .. رقم 10 دا حجم) .. وممكن تكون القيمة حاجة اسمها Boolean أيوا يا شيرين اسمها بولين ، ودي يا إما 1 أو 0 واحد هيقولي غلط إنت بتدي معلومات غلط هي القيمة إما True أو False هقوله صحيح .. ما هي القيمة True =1 والقيمة False = 0 ، وقد تكون القيمة عبارة عن تنسيق معين زي أول سطر xlCenter ودي شرحناها الحمد لله .. وقد تكون قيمة ثابتة vbBlue زي مثلا اللون الأزرق دا ثابت ومعرف في محرر الأكواد هيكون الكود بهذا الشكل بعد التعديل عليه .. وبكدا نكون اتعرفنا على أشكال مختلفة للقيم اللي بتيجي بعد علامة يساوي يعني دلوقتي الأخ الجموعي اختصر الكود اللي في تسجيل الماكرو بشكل رائع ، وإحنا كمان هنختصر اللي اختصره في الكود التالي فبكدا يكون دا مختصر المختصر (يعني دا المفيد) With Range("A1:B10") .HorizontalAlignment = xlCenter .Font.Name = "Arial" .Font.Size = 14 .Font.Bold = True .Font.Color = vbBlue End With آخر نقطة ممكن نتكلم فيها عشان دي أنا نسيتها إزاي نربط الماكرو بزر يقوم بالتنفيذ : معلش نسيت النقطة المهمة دي - اعذروني بسبب الزهايمر - بنروح للتبويب ومش هقول اسمه لأن كل شغلنا عليه هنلاقي فيه كلمة Insert بنضغط عليها بيفتح معانا قايمة منسدلة فيها أدوات تحكم اختار أول واحد اسمها Button (Form Control ودا أول أداة تحكم موجودة وأكثرها استعمالا ..ارسمها ببساطة على ورقة العمل وبعديها كليك يمين ثم اختر الأمر Assign Macro وحدد اسم الماكرو المراد ربط الكود به في المثال السابق مثلا دا مثلا شكل الكود بالكامل فيه اسم الإجراء الفرعي بعد كلمة Sub Sub FormatRangeA1_B10() With Range("A1:B10") .HorizontalAlignment = xlCenter .Font.Name = "Arial" .Font.Size = 14 .Font.Bold = True .Font.Color = vbBlue End With End Sub لما نعمل كليك يمين على زر التحكم هنلاقي اسم الإجراء الفرعي موجود نعلم عليه ونضغط أوك وبكدا نكون ربطنا الكود بزر تحكم ما عليك الآن إلا أن تقوم بعمل كليك واحدة على الزر لتنفيذ الأمر بكل بساطة .. الأخت الفاضلة morestudy بالنسبة لأول ملف عندك مفيش أي خطأ لا في الكود ولا في التنفيذ .. وبعدين لما يظهر خطأ يا ريت نسرد محتوى رسالة الخطأ لتحليلها .. بس الملف مفيهوش أي مشكلة. الملف الثاني أيوا فيه أخطاء المفروض إننا لازم قبل أي شيء الإشارة لنطاق محدد في الأسطر اللي في الكود خاصتك مفيش إشارة فطبيعي إنه يكون غط راجعي الكود اللي تفضل بيه الأخ الجموعي وشوفي الفرق .. وصححي الخطأ بنفسك أرجو ان تكونوا قد استفدتم إخواني الكرام دمتم في رعاية الله وحفظه
    1 point
×
×
  • اضف...

Important Information