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

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

  1. أبو حنــــين

    أبو حنــــين

    الخبراء


    • نقاط

      3

    • Posts

      2,845


  2. AlwaZeeR

    AlwaZeeR

    الخبراء


    • نقاط

      3

    • Posts

      775


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

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

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


    • نقاط

      3

    • Posts

      13,165


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

    سليم حاصبيا

    أوفيسنا


    • نقاط

      2

    • Posts

      8,723


Popular Content

Showing content with the highest reputation on 04 أغس, 2016 in all areas

  1. DoCmd.GoToRecord acForm, "FrmName", acLast Forms!frmName.textName.SetFocus Me.Parent.Controls("CntrlName").SetFocus واذا لم تنجح ارفق مثالاً ووضح فيه المطلوب وسوف تصل لمبتغاك :: تحياتي
    2 points
  2. السلام عليكم ورحمة الله وبركاته اشتغلت في بعض برامجي على الصور وملفات pdf ، وجمعتها هنا بطريقة سهلة ، حتى يسهل فهم طرق الربط والاستفادة منها ، كما اني كنت اريد تصفح جميع ملفات مجلد ما ، فعملت له برنامج خاص به لتسهيل العمل عليّ وعلى المستخدمين ، ولكني لم اتعامل مع الماسح الضوئي ، فقررت النظر في افضل الطرق واسهلها ، وانا أؤمن بأن للأكسس حدود معينة (مثله مثل اي برنامج) ، فانا دائما استخدم البرامج المساعدة لمساعدتي في عمل المطلوب ، مثل النجار اللي عنده جميع الادوات للاستعمال ، لهذا السبب فهو لا يستخدم المطرقة لكل اعماله ، لهذا ، انا استخدم الاداة الصح ، للعمل الصح ، وفي الكثير من الاحيان ، هذه الاداة لا تكون برنامج الاكسس البرنامج (معلومات عن الحيوانات ) يقوم بالتالي: ربط الصور وملفات pdf بالسجلات مباشرة ربط الصور وملفات pdf بالسجلات بالجملة تشغيل واستخدام الماسح الضوئي لجلب الصور وملفات pdf ولأن الصور والملفات مرتبطة بالبرنامج (اي غير مضمنه فيه) ، ترى ان حجم البرنامج صغير وسريع الصفحة الرئيسية في البرنامج: . 1. . لدينا نموذج رئيسي ، ندخل فيه اسم الحيوان ، والبرنامج يعطي هذا الحيوان رقم تلقائي (نوع الحقل هو رقم وليس رقم تلقائي) ، اسم الحيوان اساسي ولا يمكن حفظ السجل بدونه ، في النموذج الفرعي ، يمكن ادخال اي عدد من السجلات ، وكل سجل بصورته ، عن طريق ايقونة المجلد نستطيع ان نختار اي صورة فردية بصيغة jpg ، او بصيغة pdf (حسب مكان الايقونة) ، ويقوم البرنامج: عمل مجلد (في نفس مجلد البرنامج) اسمه images ، وهذا المجلد سيحتوي على جميع صور وملفات pdf البرنامج ، للنموذج الاساسي والفرعي. عمل مجلدات فرعية لكل حيوان (اسم المجلد هو رقم الحيوان) ، بأخذ هذه الصورة/pdf من المكان الذي هو فيه ، واعطاءه الرقم الصحيح ، ويحفظه في المجلد الصحيح ، ثم يقوم بحذف الصورة الاصلية. 2. . هنا نستطيع ادخال الصور للنموذج الرئيسي والفرعي ، بالجملة: 1. ايقونة اختيار المجلد الذي به الصور ، 2. يظهر اسم المجلد هنا ، 3. وتظهر اسماء الصور التي بصيغة jpg والموجودة في المجلد ، 4. عند النقر على الاسم ، سترى الصورة في 4 ، كما يمكن استخدام السهم اعلى و اسفل للتنقل بين اسماء الصور ، ورؤيتها ، 5. عندما ترى صورة الحيوان الذي تريده ، انقر مرتين على اسم الحيوان ، وسيأخذ البرنامج هذه الصورة من المكان الذي هي فيه ، واعطاءها الرقم الصحيح ، وحفظها في المجلد الصحيح ، ثم يقوم بحذف الصورة الاصلية ، وبما ان الصورة حذفت من المكان الاصلي ، سيختفي اسم الصورة من 3 ، 6. يقوم بنفس عمل 5 ، ولكنه يعمل عند إدخال رقم الحيوان (تصور ان لديك صور وصولات/فواتير ، وكل وصل عليه رقم ، فيمكن استعمال هذا الرقم لربط صورة الوصل بالسجل) ، ثم النقر على 9 إدراج (مع ابقاء رقم المنزل فاضي ، او ادخال الرقم صفر فيه) ، 7. يقوم بنفس عمل 5 ، ولكنه لأسماء منازل الحيوانات ، 8. نفس عمل 7 ولكن بطريقة 6 10. يمكن فتح الصورة المختارة عن طريق البرنامج الافتراضي للوندوز. 3. . نفس طريقة عمل النموذج 2 ، ولكن لإدخال ملفات pdf. 4. . هنا نبدأ بالتعامل مع الماسح الضوئي Scanner 1. للبحث في السجلات ، 2. هذه هي الخطوة الاساسية للتعامل مع الماسح الضوئي Scanner: البرنامج الوسيط الذي استعمله هو NAPS2 (موجود ضمن المرفق ولا يحتاج الى تنصيب ، والتعامل معه يكون مع برنامج الاكسس) ، وهذا رابطه http://sourceforge.net/projects/naps2/ رجاء النظر الى المادة التالية 5 ، لهذه الخطوة ، يحتاج هذا البرنامج الى NET. ، اصدار 4 ، والذي عادة يكون منصوبا على الكمبيوتر ، وهذه روابط التنزيل اذا احتجت لها: Latest(web installer) http://www.microsoft.com/en-us/download/details.aspx?id=42643 Latest(Stand alone) http://www.microsoft.com/en-us/download/details.aspx?id=42642 for XP http://blogs.msdn.com/b/dotnet/p/dotnet4xp.aspx 3. عند الانتهاء من التعامل مع 2 اعلاه ، يجب النقر على هذا الزر ، حتى نستورد تضبيطات NAPS2 ، وهي بيانات خصائص الماسح الضوئي ، والتي على اساسها يعمل الماسح الضوئي ، والنقر على هذا الزر سيحذف جميع سجلات NAPS2 التي في قاعدة بياناتنا ويستبدلها بالمستوردة حاليا (ولكن سنرى اننا لم نفقد شئ بهذا العمل) ، 4. نستطيع إضافة سجلات جديدة (تضبيطات/خصائص جديدة للماسح الضوئي) ، 5. نستطيع تغيير كافة تضبيطات/خصائص الماسح الضوئي من خلال تغيير البيانات هنا ، 6. ولكن لا نستطيع تغيير التضبيطات التي باللون الاحمر ، 7. هذا هو الاسم الذي نكتبه نحن للتعرف على التضبيطات/الخصائص التي سنستخدمها ، ولا يمكن تكرار الاسم ، تابع 4 . عند الضغط على الزر 2. اعلاه ، سيفتح لنا برنامج NAPS2 ، ولكن لن نتعامل مع البرنامج كاملا (طبعا تستطيع ان تتعامل مع الماسح الضوئي بالكامل مع هذا البرنامج والذي به خصائص وميزات) ، 1. يجب ان نعمل Profile واحد على الاقل باستخدام NAPS2 لكل جهاز Scanner مربوط بالكمبيوتر ، ونستطيع ان نضيف خصائص وتضبيطات اخرى من خلال 4.4 اعلاه ، عند النقر على Profiles ، تظهر نافذه جديدة ، 2. نضغط على الزر Add لنضيف Profile جديد (طبعا يمكن اضافة اي عدد من Profiles من خلال هذه النافذة) ، وعند النقر على هذا الزر ، تظهر لنا نافذة جديدة ، 3. نضغط على هذا الزر لإختيار اي Scanner مرتبط بالكمبيوتر ، 4. نختار Scanner ، 5. نوافق على الاختيار ، 6. مثل 4.7 اعلاه ، 7. عمل التضبيطات والخصائص المطلوبة لكل عمل (مثل المسح من الزجاج Glass ، او من وحدة تغذية المستندات التلقائية ADF ، او المسح من جانبي الورقة Duplex ، بالاضافة الى الخصائص الاخرى) ، 8. الضغط على موافق لحفظ هذه الخصائص والتضبيطات ، ولا تنسى ان تضغط على 4.3 اعلاه ، حتى يستورد برنامجنا الاكسس هذه الخصائص والتضبيطات ، 5. . هنا تتم عملية المسح من الماسح الضوئي Scanner ، 1. لبحث اسم Profile الذي نريد استخدامه للمسح ، 2. يمكن عمل اي تغيير لخصائص الماسح الضوئي ، والذي سيتم حفظه تلقائيا في Profiles ، ولاحظ ان لدينا 4 سجلات هنا ، اي 4 Profiles ، 3. نختار اين نريد حفظ الملف ، 4. ونكتب اسم الملف (البرنامج سيقوم بحذف اي ملف سابق بنفس الاسم في المجلد) ، 5. صورة المسح ستظهر هنا ، 10. وهنا سيظهر اسم الصورة التي تم مسحها ، 6. يمكن النقر مرتين على اسم الحيوان (كما تم شرحه سابقا) ، 7. كما تم شرحه سابقا ، 8. 9. النقر على هذا الزر يجعل الماسح الضوئي يعمل حسب الخصائص الموجودة في السجل (انظر 2 اعلاه) ، تابع 5 . عند النقر على 9 اعلاه ، نرى هذه الشاشة والتي تختفي عند الانتهاء من عملية المسح الضوئي ، 6. البرنامج NAPS2 يحتفظ بصور مؤقتة لكل عملية مسح يقوم بها ، فاذا توقف الماسح الضوئي لأي سبب ، فيمكنك ان ترى الصور التى تم مسحها ضوئيا ، وان تتعامل معها كيف شئت ، وذلك بالنقر على هذا الزر والذي سيفتح نافذة مجلد الصور المؤقتة ، 7. قبل الخروج من البرنامج ، فان البرنامج سيقوم بحذف جميع الصور المؤقته ، ثم سيغلق البرنامج ، لذلك ، اذا لأي سبب كان ، اردت الصور المؤقته ، فيجب عليك نسخها من مجلدها (انظر 6 اعلاه) قبل النقر على زر الخروج. عند فك ضغط الملف المرفق ، سترى فيه البرنامج والمجلدات التالية: . الملف والمجلدات التي داخل المربع الاحمر ، يجب ان تكون دائما في نفس المجلد مع البرنامج ، اما المجلد Different_Pictures فيمكن نقله الى اي مجلد ، وقد وضعت في هذا المجلد بعض الصور والتي يمكن استخدامها لتجربة البرنامج. في الواقع البرنامج غني بعدة انواع من الكود ، ويمكن ملاحظت الكود عن طريق عمل البرنامج. اقتراحات / تعديلات ، انا في الخدمة قدر المستطاع جعفر طريقة عمل NAPS2 كبرنامج متكامل: http://www.thewindowsplanet.com/2793/scan-your-paper-documents-and-save-them-to-pdf-tiff-jpeg-png-and-other-file-formats.htm Scan_Link_Images_pdf_Files.zip
    1 point
  3. استبدل الكود بهذا Sub exp() Dim My_Sheet As Worksheet Dim Nme, lr, lr1 As String Dim filter_range, rg_to_copy As Range lr1 = Sheets("قوائم ").Cells(Rows.Count, 1).End(3).Row If lr1 < 12 Then lr1 = 12 Sheets("قوائم ").Range("a12:g" & lr1).ClearContents Nme = Sheets("قوائم ").Range("c7").Value lr = Sheets(Nme).Cells(Rows.Count, 1).End(3).Row Set filter_range = Sheets(Nme).Range("a12:g" & lr) On Error Resume Next Sheets(Nme).Range("A12").AutoFilter field:=7, Criteria1:=Sheets("قوائم ").Range("c8") Set rg_to_copy = filter_range.SpecialCells(12) If rg_to_copy.Rows.Count = 1 Then MsgBox "لا توجد هذه الشعبة" & " " & Sheets("قوائم ").Range("c8") & Chr(10) & "في الصف" & " " & Nme, vbExclamation + vbMsgBoxRight: GoTo ending rg_to_copy.Copy Sheets("قوائم ").Select ActiveSheet.Range("a12").PasteSpecial (xlValues) ending: Application.CutCopyMode = False If Sheets(Nme).autofiltrmode = True Then Sheets(Nme).ShowAllData Sheets("قوائم ").Select ActiveSheet.Range("a12").Select 'Sheets(Nme).AutoFilter End Sub
    1 point
  4. اذا كان مصدر التقرير استعلام فالمسألة يسيرة جدا ففي حقل جديد في الاستعلام تكتب هذا الكود باعتبار ان الحقل الذي يحمل القيمة -1 اسمه fld1 expr1:iif ([fld1]=-1;"غ";"") لاحظ انك ستجعل الحقل expr1 هو مصدر الـــ غ في التقرير
    1 point
  5. لغاية الان لم اجد حل لهذه المشكلة ربما احد من الزملاء عنده الحل
    1 point
  6. عذرا استاذنا الكريم النت انفصل عندنا واردت اجابتك .......... وجدت الخلل عندي كما تفضلت البيانات متشابهة لك تقديري وحترامي هذا هو المطلوب شكرا لحضرتك ابدعت في الاجابة اقدم اعتذاري لكم شكراً لك يا مبدع شكرا والف شكر شكراً لك يا مبدع شكرا والف شكر شكراً لك يا مبدع شكرا والف شكر شكراً لك يا مبدع شكرا والف شكر شكراً لك يا مبدع شكرا والف شكر شكراً لك يا مبدع شكرا والف شكر
    1 point
  7. البيانات تتغير اخر الكريم .. لكن لان التواريخ متساوية في كل الشيتات فلن تلاحظ التغير .. جرب وضع تواريخ مختلفة وشاهد النتيجة
    1 point
  8. if me.frtxt<14 and me.frtxt>27 then msgbox"السلام عليكم و رحمة الله و بركاته" end if في مكان السطر الثاني تكتب الأمر الذي تريده
    1 point
  9. السلام عليكم و رحمة الله و بركاتة الاخ العزيز ابو عبد البارى أشكرك جزيل الشكر عل متابعة الموضع جزاك الله خيرا و شكرا لك و اوضح لك ما تم من تعديل كما يلى 1 - تحديد نطاق الترحيل قمت بالتعديل علية من Range("p3:s" & last).Copy الى Range("p3:s17" & last).Copy 2 - كود الفلتر من Range("e21:i" & last1).Sort Key1:=Range("g21"), Order1:=xlAscending, Key2:=Range("f21"), Order2:=xlAscending الى Range("e21:i" & last1).Sort Key1:=Range("f21"), Order1:=xlAscending, Key2:=Range("g21"), Order2:=xlAscending 3 - اضافة كود مسح النطاق المرحل و لمسح النطاق المرحل قمت باضافة الكود التالى فى الاخر Range("p3:s17" & last).ClearContents فأصبح الكود Private Sub abo_abary() last = Cells(Rows.Count, "p").End(xlUp).Row last1 = Cells(Rows.Count, "f").End(xlUp).Row Range("p3:s17" & last).Copy Cells(last1 + 1, 6).PasteSpecial xlPasteValues Cells(last1 + 1, 5).Value = last1 - 20 last1 = Cells(Rows.Count, "f").End(xlUp).Row Range("e21:i" & last1).Sort Key1:=Range("f21"), Order1:=xlAscending, Key2:=Range("g21"), Order2:=xlAscending Application.CutCopyMode = False Range("p3:s17" & last).ClearContents End Sub ارجوا من الله ان يكون التعديل الذى قمت بة صحيح ولك حق توجيهى ان كنت اخطئ فى شى جزاك الله خيرا و شكرا لك
    1 point
  10. قائمة ديناميكية تقوم بجلب البيانات من الصفوف الدراسية.rar
    1 point
  11. الأخ الكريم زوبير عقاب بعد السلام عليكم جرب المعادلة التالية =IF(OR(VALUE(LEFT(A1))=3;VALUE(LEFT(A1))=2)=TRUE;"1";"0")
    1 point
  12. السلام عليكم اعتقد و الله اعلم أنه تم عمل المطلوب جمع العناصر المتشابهة 33.rar
    1 point
  13. لم اجرب الكود لذلك وقع الخطأ و لقد تم تصحيحه جديد الاصناف 3.rar
    1 point
  14. وعليكم السلام ورحمة الله وبركاته تفضل اخي العزيز صالح مثال كان عندي قديماً فيه ما تحتاج جرب ووافني بالنتيجة :: تحياتي MyReb.rar
    1 point
  15. مرحبا تم عمل المطلوب ان شاء الله جديد الاصناف 2.rar
    1 point
  16. اخى الفاضل الحل الامثل لهذه المشكلة هى فتح ملف وورد ثم حفظه من قائمة ملف ثم حفظ ثم تختار حفظ بنوعية (office 2003 )( doc) وليس ( docx) وبعد ذلك ادرج الورد أرت واكتب كما تريد ستجده كما فى وورد 2003 جرب ورد علينا تحياتى
    1 point
  17. الكتاب رائع جدا رغم انه لم يحالفني الحظ في الامتحان نسأل الله للمؤلفين التوفيق في اصدار كتاب آخر أو برنامج محاكاة للامتحان شبيه بالفاست تراك . تمت قراءة الكتاب أكثر من اربع مرات وللامانه مازلت ارغب في قراءته اكثر .
    1 point
  18. ما شاء الله عليك أخي جعفر هذا ليس بغريب على مبدع مثلك .. بالنسبة للسكانر فهنالك كود يقوم بعمل سكان على طول من السكانر ارجو الاطلاع عليه عسى ان يفيدكم بشيء تحياتي كود اخذ صورة من السكانر.zip
    1 point
  19. الحلقة الخامسة **************** السلام عليكم ورحمة الله وبركاته نستكمل حلقاتنا للي متابعين .. وللي مش متابعين بردو! هنتكلم النهاردة عن النطاقات في VBA وطرق تحديدها ... نبدأ الأول نعرف معنى كلمة نطاق : هل النطاق مجموعة خلايا متجاورة (جنب بعض) ولا مجموعة خلايا غير متجاورة (خلايا زعلانة ومتخاصمة فبعيد عن بعض) ؟ أعتقد إن فيه كتير فاهمين كلمة نطاق غلط .. أولا نطاق بالانجليزي Range والنطاق في الإكسيل بيكون مطاطي (مرن) بيشمل مجموعة كبيرة من المفاهيم :: الخلية الواحدة اسمها نطاق .. واحد يقولي يعني A1 دي نطااااااااااق .. إنت كدا خليت الخلية تاخد أكبر من حجمها هي مجرد خلية ، أرد وأقوله .. الخلية نطاق ومجموعة الخلايا المتجاورة نطاق ، ومجموعة الخلايا الغير متجاورة نطاق ، والصف الواحد نطاق ، ومجموعة صفوف نطاق ، والعمود الواحد نطاق ، ومجموعة أعمدة نطاق .. بس خلاااص (الحاجة الوحيدة اللي لا تصلح إنك تحدد نطاق في أكتر من ورقة عمل .. يعني الشغل كله في تحديد النطاقات بيكون في ورقة واحدة .. بمعنى آخر ميجيش واحد ويقول عايز أحدد مجموعة خلايا في الورقة الأولى + مجموعة خلايا في الورقة التانية دي لسه بيل جيتس معلمهاش) جميل لحد دلوقتي يبقا كدا اتعرفنا على لفظ نطاق ..طيب كلنا عارفين إننا عشان نقدر ننفذ أمر معين لازم الأول نحدد النطاق اللي هيتم التنفيذ عليه .. مينفعش أقول مثلا نسق الخلايا ولونها وخلي حجمها 14 - طبيعي إن اللي بيفكر كدا يبقا فاهم إن الكمبيوتر بيسمعه وعارف عايز ايه ، مفيش خلاف إننا لما بنتعامل مع الكمبيوتر مننساش إننا بنتعامل مع آلة ، يعني مهما كانت درجة تفوقها فهي غبية ، والغباء هنا صفة مش مذمومة ، الغباء اللي أقصده إنه لازم تمشي خطوات منطقية ومنطقية جدا عشان تقدر تحقق هدفك .. فأول خطوة دايما للتعامل غالبا بتكون تحديد النطاق اللي هشتغل عليه .. عشان كدا هافرد الشرح عن تحديد الخلايا والنطاقات بشكل تفصيلي .. ادعوا لي ربنا يوفقني في توصيل المعلومة) نبدأ على بركة الله .. واحد هيقولي : كل دي بداية دا إنت هتطلع عنينا ، على ما نعرف المعلومة (بس أحب أوضح إن الأمور لما تكون مفهومة تمام الفهم والإدراك ، دا بيسهل عملية التعلم بشكل كبير ؛ عشان كدا متستغربوش إني برغي كتير .. الهدف في النهاية توصيل المعلومة بأسلوب غير تقليدي) بصراحة أنا مش مرتب هشرح إزاي الموضوع نظرا لأن فيه معلومات كتير وخايف تتوهوا مني .. بس دلوقتي خطرت لي فكرة إننا نقسم الموضوع ، ونتعامل مع جزئية جزئية أول جزئية هنتكلم عليها الخلية المفردة (الخلية : زي ما إحنا عارفين عبارة عن التقاء الصف مع العمود ..معلومة قديمة .. والصف بيكون عبارة عن رقم ، والعمود عبارة عن اسم حرف .. بردو معلومة قديمة .. والخلية لما بنسميها بتكون عبارة عن اسم العمود وبعديها رقم الصف .. بردو معلومة قديمة!!) (شكلي كدا معنديش معلومة جديدة أديهالكم النهاردة !!) مثال : لو قلنا الصف الرابع والعمود الخامس ، هنعبر عنه إزاي ؟ نحسبها : نبدأ الأول بالعمود (نظرا لأن العمود رأسي وأنا رأسي مشغولة بالفكرة) ، العمود الخامس دا فين .. عشان نعرف يبقا لازم ناخد درس إنجليزي الأول ونركز على الحروف (أصلي معلم إنجليزي وعايز أسوق لنفسي دروس) ..نبدأ نقول مع بعض : A و B و C و D و E (بس خلاص وصلنا للحرف الخامس يبقا العمود الهدف هو العمود E .. بلغة البرمجة Target.Column=5 .. محدش يدقق أوي في الجملة دي ، بعدين هنعرفها ، دا كان حرف العمود ، والرقم مش محتاج نحسبه لأن الصف الهدف هو الرابع .. بلغة البرمجة Target.Row=4 (بكدا تكون عنوان الخلية الهدف هي الخلية E4 .. وبلغة البرمجة Target.Address=$E$4 السؤال الأول : كيف يمكن تحديد الخلية E4 في محرر الأكواد ؟ الإجابة : الإجابات متنوعة ، نشوف كل الطرق عشان نتعلم ... أول طريقة : استخدام الخاصية Range >> نطبق على الخلية E4 مثلا Range("E4").Select هنا لازم بعد الخاصية Range بنفتح قوس ) وبعد القوس قوس تنصيص " وبعدين عنوان الخلية .. وزي ما اتعودنا القفلة يا رجالة ... كدا إحنا أشرنا للخلية E4 ، ونقول لمحرر الأكواد حددها بكلمة Select تاني طريقة : استخدام الخاصية Cells ، ودي مختلفة شوية Cells(4, 5).Select هنا بنفتح قوس بعد الخاصية Cells وبنستخدم أرقام (رقم الصف الأول ، وبعدين رقم العمود) ودي شرحناها بالتفصيل وعرفنا إن رقم الصف 4 ، ورقم العمود E هيكون رقم 5 ، ونفس القصة بعد الإشارة للخلية الهدف نقول لمحرر الأكواد حددها بكلمة Select تالت طريقة زي تاني طريقة ..إننا نستخدم Cells بردو (إزاي دي ؟؟!!) Cells(4, "E").Select هنا لو موضوع رقم العمود دا مضايقك ، ولا يهمك هنشوف لك بديل ، ممكن تكتب اسم العمود بس مننساش أقواس التنصيص !! رابع طريقة : طريقة الباشمهندس طارق محمود (أنا سميتها كدا لأنها المفضلة عند الباشمهندس طارق) [E4].Select ويا ريت نعرف كل الطرق ، لأن كل طريقة وليها استخدامها في مواقف معينة .. دي بتيجي مع الخبرة .. نقطة أخيرة قبل ما ننتقل للجزئية التانية .. افتراضيا الشغل بالشكل ده على ActiveSheet يعني كل الأسطر اللي كتبناها ممكن نضيف قبل كل سطر كلمة ActiveSheet متبوعة بنقطة (عشان لما نبدأ نتعامل مع أكتر من ورقة نخلي بالنا .. بس لو شيلناها بيفهم محرر الأكواد إننا بنتعامل مع المصنف النشط الورقة النشطة) @ انتهى الجزء الأول@ السؤال التاني : كيف يمكن تحديد النطاق A1:C10 في محرر الأكواد؟ الإجابة : أجب بنفسك (ارحموني شوية كله عليا لوحدي ، أنا تعبت!!) Range("A1:C10").Select هنا استخدمنا الخاصية Range (واحد هيسأل هي Range خاصية ولا كائن .. أقولك هي كائن وخاصية ، هي من ضمن خواص ورقة العمل ، وفي نفس الوقت كائن (يعني ممكن نقول تابع ومتبوع) ...هنا عشان نحدد نطاق الموضوع في منتهى البساطة بنحدد أول خلية في النطاق وآخر خلية في النطاق (لما نجرب نحدد بالماوس الخلية A1 وبعدين نضغط Shift من لوحة المفاتيح ونحدد الخلية C10 هنلاقي النطاق اللي ما بين الخليتين تم تحديده بالكامل ، أنا قلت الحتة دي ليه ؟ ؛ عشان أوصلكم معلومة إننا كل اللي بيهمنا عشان نحدد نطاق بدايته ونهايته ..... نلاحظ إننا فصلنا بين البداية والنهاية بالعلامة دي : طريقة تانية : Range("A1", "C10").Select زيها بس الفصل بين البداية والنهاية بيكون بفاصلة .. وهنا لاحظ الاختلاف بنفسك (مش كل حاجة لازم نشرحها بالتفصيل .. فيه ناس بدأت تحس بالملل والرتابة ) طريقة تالتة : اننا نستخدم Range و Cells مع بعض Range(Cells(1, 1), Cells(10, 3)).Select واحد هيبص للسطر اللي فات ويقولي ايه الكلكعة دي إنت كنت ماشي زي الفل والأمور واضحة ..مالها بقت ضلمة ليه كدا ؟؟ يا حاج سعد ولا ضلمة ولا حاجة إنت بس ركز كد .. الخاصية Range بيكون وراها قوسين بين القوسين بداية ونهاية .. البداية Cells(1, 1) اللي هي مرادف الخلية A1 والنهاية Cells(10, 3) اللي هي الخلية C10 بكدا نكون حددنا البداية والنهاية داخل الخاصية Range ...أظن الأمور كدا بقت واضحة يا شوقي !! طريقة رابعة إننا نسمي النطاق في ورقة العمل .. وطبعا دي أمرها بسيط ..داخل ورقة العمل بحدد A1:C10 وأسميها عن طريق وضع الماوس في صندوق الاسم ونكتب اسم وليكن Officena Range("Officena").Select ومننساش إن Officena دي اسم للنطاق ، والاسم نص ، والنص يؤكل إذاً الجبن يؤكل ..أعتذر (سرحت في الفلسفة : الخوف جبن والجبن يؤكل إذاً الخوف يؤكل ..دا منطق فاسد) أما المنطق بتاعنا مش فاسد الحمد لله ... الاسم نص والنص يوضع بين أقواس تنصيص. خامس طريقة (طريقة باشمهندس المنتدى .. من أحب الناس لقلبي) [A1:C10].Select @انتهى الجزء الثاني@ الجزء الثالث عن طريقة تحديد خلايا أو نطاق في ورقة عمل أخرى داخل المصنف .. ودي بسيطة بس ركزوا لأنها مختلفة شوية أد كدا (طبعا محدش شايف ايدي والحمد لله ، لأنكم لو شفتوا ايدي هتدعوا عليا !!..) Application.Goto Sheets(3).Range("A1:C10") الخاصية Goto دي مش خاصية يا متنورين ، دي Method لأنها حدث أو فعل (نسينا ..كله يراجع تاني ، وإلا مش هكمل ) معناها( اذهب إلى ) ، وبعدين مسافة ، وبنحدد المكان اللي هيروحله محرر الأكواد .. نخلي بالنا هنا مستخدمناش Select والله يا أبطال مستخدمناها ، ولو استخدمناها محرر الأكواد هيفضحنا برسالة خطأ الـ Method هنا اللي اسمها Goto أغنت عن الـ Method اللي اسمها Select .. لأنه ببساطة مينفعش فعلين في نفس الوقت .. هو دا النظام إذا كان عاجبكم ... مينفعش حدثين مع بعض يا إما Select يا إما Goto طيب نجرب نستعمل Select ونشيل Goto اللي إحنا مش متعودين عليها كدا نجرب ، وإحنا واقفين في الشيت رقم واحد وننفذ السطر التالي Sheets(3).Range("A1:C10").Select شكلها صح ، لكن للأسف غلط ..لأننا دلوقتي بنتعامل مع ورقة عمل تانية ، بالتالي لازم عشان نعمل سطر زي ده ، وميكونش فيه رسالة خطأ ، لازم ولابد وحتما إننا ننشط ورقة العمل اللي هنشتغل عليها بـ Method اسمها Activate (نشط) Sheets(3).Activate Sheets(3).Range("A1:C10").Select كدا نتلاشى رسالة الخطأ ، والحمد لله ..خلاصة الكلام إننا لو استخدمنا Select أثناء التعامل مع ورقة عمل أخرى ، يبقا لازم ننشط ورقة العمل (نديها منشطات عشان متهنجش مننا .. ممكن نستعين بالأستاذ الغالي اللي غايب عننا رجب جاويش) وحتى النطاقات المسماة زي النطاق اللي سميناه من بدري باسم Officena لو أنا في ورقة عمل تانية ، مش هينفع أستخدم Select معاها بردو .. فالأفضل في التعامل مع أوراق العمل الأخرى استخدام Goto Application.Goto Range("Officena") @انتهى الجزء التالت@ وانتهت الحلقة .. مش عارف إذا كنت استوفيت الموضوع النهاردة بالتفصيل ولا لا .. بس عموما لو حد عنده إضافات بالنسبة لتحديد النطاقات يفيدنا بيها .. أنا قلت اللي عندي ، قولوا إنتو اللي عندكو (بارك الله فيكم على حسن المتابعة ، وإلى لقاء مع حلقة جديدة ومعلومات جديدة ..أستودعكم الله) الواجب : متروك لكم حرية عمل مصنف ، وتنوع فيه الطرق المختلفة للتحديد .. كان معكم على الهواء تحديداً في الكرسي الأخير من الصف الأخير في قاعة أوفيسنا .. قاعة أوفيسنا.الصف الأخير.الكرسي الأخير.تحديد(أبو البراء) دمتم في رعاية الله
    1 point
  20. الحلقة الرابعة طبعا أنا ايدي بتترعش وأنا بكتب كلمة الحلقة (الرابعة) ، دا عشان رقم 4 بقا من المحرمات في مصر .. وربنا يستر ومحدش يبلغ عننا!! فيه نقطة معينة في الشرح تعمدت إن أسيبها عشان حبيت إن حد يسألني عليها بس للأسف محدش سألني ، ودا معناه إن اللي بيتابع الحلقات مجرد متلقي يعني مش فعال .. أو فعال وخايف إنه يسأل لأحسن أضربه .. متخافوش مش بضرب ولا بحب الضرب وبحب اللي يسألني ، حتى لو كان السؤال تافه .. لإن السؤال هو طريق المعرفة .. ومن غير السؤال مش هنتعلم !! النقطة اللي بتكلم عليها حفظ الملف اللي فيه أكواد .. محدش فيكم جاتله رسالة زي دي؟ طبعا النقطة دي كان لازم نشرحها ولازم تسألوا عليها .. طبعا أول ما بتفتح الإكسيل وتشتغل عليه بيكون الملف الافتراضي xlsx .. وطول مفيش أكواد بتتم عملية الحفظ بشكل طبيعي ، أما لو كتبت إجراء فرعي أو بمجرد كتابة اسم إجراء فرعي بس حتى لو كان جواه فاضي مفيهوش أكواد ، وجيت تحفظ هتلاقي الرسالة دي ، لأن صيغة الملف اللي بيحتوي على ماكرو مختلفة عن الصيغة العادية ، بتكون الصيغة xlsm. طيب نعمل ايه ؟ أكبر غلطة إنك تضغط Yes مش أي حد يقولنا نعم نقوله ماشي غلط .. هنا لو ضغطت Yes هيحفظ الملف بدون أكواد .. لازم تتمرد وتضغط No وتحدد اسم الملف في حقل File Name أظن دي كلنا عارفينها ، وفي الحقل التالي فيه قايمة منسدلة بنختار منها تاني اختيار Excel Macro-Enabled ، وبكدا نقدر نحفظ الملف اللي فيه أكواد . طبعا هتلاقي ملف تاني موجود في المكان اللي فيه الملف الأول بس الصيغة مختلفة .. الحمد لله حفظنا الملف اللي هنشتغل عليه !! نبدأ الحلقة : هنرغي النهاردة عن المتغيرات .. لاحظت في كل الشروحات اللي شفتها إن درس المتغيرات بيكون دمه تقيل ورخم ؛ لأن كله بيكون غالبا نظري أكتر منه عملي وبيكون في درس واحد مرة واحدة . إحنا لأننا اتبعنا أسلوب مختلف تماما هنتكلم عنه واحدة واحدة متغير متغير ، وبالأمثلة والتطبيق ، ومش مهم الكم بقدر الكيف (ومحدش يفهم الكيف دي غلط) نفهم الأول يعني ايه متغير .. يعني مش ثابت (صح يا حسام .. حد عنده إجابة تانية كله ساكت يعني مفيش غير حسام اللي عارف ..)! لما نبدأ في عالم البرمجة ، مع الوقت هتلاقي نفسك محتاج الذاكرة إنها تخزن لك أرقام معينة أو نصوص ؛ عشان تستدعيها في وقت اللزوم ، وتبدأ تتعامل مع لما تستدعيها (ربنا يكفينا شر الاستدعاء) عشان نقدر نخزن الأرقام والنصوص دي لازم نستعين بالمتغير .. ييجي المتغير ويقولنا تحت أمرك يا فندم أنا في الخدمة ، وطبعا الذاكرة بردو متأخرتش عننا في تقديم المساعدة. بس المتغير له شروط عشان نقدر نستفيد منه ..أولاً عايز حاجة تسنده عشان بيتكسف يقف لوحده فبنستدعي كلمة اسمها Dim ، ومن غير الكلمة دي يبقا المتغير وحيد ومش هيرضى يساعدك (هي دي اللي بنعلن بيها عن المتغيرات) ثانياً بنديله اسم تمام .. فاكرين شروط تسميه الإجراء الفرعي تقريبا نفس شروط تسمية المتغير .. يعني مينفعش يبدأ برقم لكن ممكن الرقم ييجي بعدين في الاسم بس في أول الاسم لا .. وممنوع الحروف الخاصة زي علامة # $ % ^ & * @ عموما لو فيه حاجة غلط محرر الأكواد هيظهر لك رسالة Syntax error تعرف إن فيه حاجة غلط.. دا كان الشرط التاني للمتغير إن يكون له اسم ، تالت شرط اللي هو نوع المتغير ( ودا ضروري بس اختياري ) فزورة دي ..>> أيوا هو اختياري يعني ممكن ميتكتبش ومفيش مشكلة ، بس طبعا ذوي الخبرة يعرفوا إن كدا محرر الأكواد بيحدد نوعه بردو ، بس بيحدده نوع اسمه Variant ودا له ميزة وعيب .. ميزته إنك لو مش عارف نوع المتغير بيكون دا الافتراضي وبيعفيك من تعريف نوع المتغير .. وعيبه إنه بيستهلك مساحة كبيرة في الذاكرة .. يعني لما ربنا يكرمكم وتكتبوا أسطر كتيرة من الأكواد لو معرفناش نوع المتغير ، هيكون الكود بطيء جدا مقارنة بإننا نعرف الكود بنوع محدد ..! عشان كدا قلنا إنه ضروري يعني هو اختياري ، بس ممكن إحنا نخليه إجباري ؛ عشان نتعود على الصح من البداية (مش كدا ولا ايه!) طيب إحنا هنعرف نوعه إزاي ؟؟ إنت اللي بتحدد نوعه حسب ما تريد وهنتعرف على الأنواع بس بالراحة عليا ..أنا أحب أرغي وآخد وقتي في الرغي قبل ما أكمل بكدا نكون عرفنا شكل السطر اللي هيتم الإعلان فيه عن المتغير ، هيكون ببساطة بالشكل اللي جاي حالا هنفترض إني هخزن في الذاكرة رقم صحيح وهنسميه MyNumber Dim MyNumber As Integer أيوا نحفظ بقا الشكل دا كويس ونشوف الشروط اللي قلنا عليها انطبقت ولا لا ! أول شرط الكلمة Dim اللي هتخلي المتغير ميخافش ، وتاني شرط اسم المتغير وهو هنا MyNumber ودا أنا اللي سميته مش محرر الأكواد عشان محدش يفكر إنه لازم يكون بالاسم ده يعني الاسم إنت حر فيه إن شا الله تسميه (مكرونة) ، وبعدين هنلاقي كلمة من حرفين As ودي متكلمناش عليها دي اللي بتفصل بين الاسم والنوع .. صحيح الاسم مرتبط بالنوع بس لسه في مرحلة الخطوبة والخطوبة هتطول فنفصل بينهم بمحرم اللي هو As وأخيرا النوع Integer ودا بيستخدم للأرقام الصحيحة (أول نوع خلصنا منه الحمد لله)... يبقا خلاصة الكلام السطر ده بنقول لمحرر الأكواد إننا هنستخدم متغير باسم MyNumber وهيكون نوعه عدد صحيح (إحنا كدا بنوفر في الذاكرة مساحة وبنخلي الكود يكون أسرع لما نحدد النوع) طبعا الطالب الناصح هيقولي هو فين الرقم اللي إحنا خزناه في الذاكرة دا ملوش أثر هقوله لسه الحتة دي جاية دلوقتي .. السطر دا بس كأننا بنكلم الذاكرة ونقولها : استعدي أيتها الذاكرة آتٍ إليكي متغير بهذا الاسم ومعاه بطاقة الرقم القومي بتاعته ابدأي اتعاملي معاه .. فالذاكرة تشوف اسمه لو كان اسمه صحيح تقوله اتفضل ، وتشوف نوعه وتحجز له مكان مناسب على أده .. ما هو كل نوع على أد حجمه (زي المثل اللي بيقول كل برغوت على أد دمه) ..يعني النوع Integer غلبان وصحته على أده هتحجزله مكان صغير ، أما Variant فربنا يديله الصحة هياخد مكان لا بأس به (يا ريت تكون النقطة دي بقت واضحة) طيب بعد ما عرفنا المتغير .. نديله قيمة وعشان ندي قيمة قلنا قبل كدا لازم علامة = يساوي ، وتكون القيمة اللي عايزين نخزنها على اليمين بعد علامة يساوي مش قبليها ومينفعش نحط القيمة الأول كدا غلط .. عايزين نتعلم صح ! زي ما أخدنا في الخصائص إن كل خاصية ليها قيمة بنحددلها قيمة .. بردو المتغير بنحدد له قيمة زي كدا MyNumber = 70 يبقا إحنا كدا حددنا قيمة المتغير بـ 70 طيب واحد يقولي يعني عشان أخزن الرقم 70 في الذاكرة هكتب سطرين ، طب ما نختصرهم في سطر واحد يا معلمي (طبعا هو مش معلمي بضم الميم لا دا بقولها بكسر الميم ، على أساس إننا قاعدين على قهوة) .. وبعدين يقولي هختصره كدا Dim MyNumber As Integer = 70 هقوله جرب بنفسك هتلاقي محرر الأكواد أظهر لك رسالة خطأ .. اللي اشتغل على Visual Basic.Net الفكرة دي مقبولة لكن هنا في الـ VBA غير مقبولة.. طيب دلوقتي نطبق عملي السطرين اللي فاتوا .عايزين مثلا نحط قيمة المتغير في الخلية A1 >> Range("A1").Value = MyNumber الخلية A1 وبعدين نقطة متبوعة بخاصية أول مرة تقابلنا دلوقتي ، ودي مهمة جدا ومعناها القيمة Value .. يعني خلي قيمة الخلية A1 تساوي المتغير اللي اسمه MyNumber ، فيقوم محرر الأكواد يروح للذاكرة يسألها عندك متغير اسمه MyNumber ، ترد تقوله أيوا قاعد مرزوع هناك أهو .. يقوم المحرر يشده من قفاه (شكلها كدا أنا اللي هيتعمل فيا كدا النهاردة .. مش جايبها لبر من بدري عمال أقول 4 واستدعاء وشد من القفا ربنا يستر ..) المحرر يشوف قيمة المتغير اللي تم تخزينها ويحطها في الخلية A1 .. اعذروني إذا كنت بشرح اللي بيحصل بالتفصيل بس التفصيل دا مهم .. واحد تاني مخه شغال هيقولي طيب أنا أقدر أختصر الكود بتاعك اللي هو 3 أسطر في سطر واحد وهيطلع الناتج صح Dim MyNumber As Integer MyNumber = 70 Range("A1").Value = MyNumber هيقولي بص بقا السحر أهو الكود بتاعك في سطر واحد Range("A1").Value = 70 هقوله برافو عليك دا صحيح بس مش هو دا المهم إننا نحط القيمة 70 في الخلية A1 وخلصت الحكاية .. الفكرة إن المتغير هنستخدمه مثلا في أكتر من سطر .. وليكن هستخدمه 10 مرات .. لو أنا سمعت كلامك يا نبيه يبقا لو حبيت أغير قيمة المتغير لـ 100 مثلا هضطر أدور على القيمة 70 في كل أسطر الكود وأغيرها 10 مرات .. لكن بالطريقة اللي قلت عليها المتغير لو حبيت أغيره هغيره مرة واحدة بس في أول الكود وخلصت الحكاية!! دي نقطة نقطة تانية إن ممكن يتم على المتغير عمليات حسابية متداخلة ، فلو استعملنا القيمة من غير المتغير هيكون صعب التعامل مع الكود طيب نجرب نحذف كلمة Dim من الكود ونخلي الكود بالشكل ده MyNumber As Integer MyNumber = 70 Range("A1").Value = MyNumber شيلنا كلمة Dim الغريب إن محرر الأكواد مبيديش خطأ لما بتشيلها .. لكن ساعة التنفيذ يخضك برسالة ويقولك معنى الكلام ده إن المتغير مينفعش يتم الإعلان عنه إلا بكلمة Dim ، وإلا سيتعبر الإعلان غير قانوني وسيتم إحالة الكود للمحاكمة (مش بقولكم مش جايبها لبر) بكدا نكون اتعرفنا على أول نوع من المتغيرات اللي هو Integer !! نتعرف سريعا على نوع تاني مشهور جدا اللي هو String ودا بيكون للقيم النصية بالمثال يتضح المقال : Dim Myname As String Myname = "Yasser" MsgBox Myname طبعا بقت الأمور أوضح دلوقتي المتغير اسمه Mname ونوعه String يعني نص .. وتم وضع القيمة النصية Yasser له ، ومننساش مع النصوص أقواس التنصيص .. وآخر سطر مش محتاج إني أشرحه بس نلاحظ في آخر سطر فايدة تانية للإعلان عن المتغيرات .. هنا لما حطينا القيمة النصية Yasser وأسندناها للمتغير Myname ، لما نيجي بعد كدا نستخدمه خلاص هنرتاح من أقواس التنصيص .. وهنعتبر دي فايدة تانية يلا بقا خدوا الواجب عشان أنا تعبت ... 1 - قم بالإعلان عن متغير بأي اسم يعجبك من أي نوع يعجبك وخليه يظهر في الخلية C5 ويظهر معاه رسالة مضمونها أنه قد تم وضع القيمة للمتغير اللي إنت سميته في الخلية C5 2 - قم بالإعلان عن متغيرين من النوع Integer وقم بعمل عملية جمع وناتج الجمع في الخلية E5 إلى لقاء مع حلقة جديدة من حلقات افتح الباب وزغردي يا رباب (دا إذا عدا اليوم بسلام ومكانش فيه استدعاء) دمتم في عون الله وحفظه
    1 point
  21. الحلقة الثالثة طبعا واحد هيقولي ارحم نفسك .. كفاية كدا النهاردة ..!! أقولك ايه النهاردة أجازة وبعدين أنا عايز أخلص الشوية اللي دايما بنطول فيهم عشان نبدأ نتعلم جديد .. مش كل اما دورة تبدأ تلاقي الموضوع يبقا زي الفل وياخد وقته في البدايات والأساسيات وفجأة الدورة تتقطع .. هنتكلم شوية في الحلقة دي عن تسجيل الماكرو .. واحد رفع ايده وبيقول أيوا أنا متمكن فيها (أقوله كتر خيرك !) بس أنا مش عايزك متمكن .. إحنا بس هنستفيد من حكاية التسجيل دي في أمور معينة .. واحد تاني هيرفع ايده ويقول طيب أنا أقدر أعمل الكود بالشكل اللي أنا عايزة من غير ما يكون عندي فكرة بالأكواد ووجع الدماغ هقوله إنت صح وغلط .. صح من جهة وغلط من جهة .. بس مش هناقش الموضوع ده المهم نبدأ نشوف ايه حكاية التسجيل دي.. قبل ما نبدأ نتعلم إزاي نخلي نافذة الإكسيل ونافذة محرر الأكواد جبنا إلى جنب خلي عينك ع الاتنين ..!! نفتح الاتنين (بلاش الجمعه عشان أجازة الموظفين) نفتح النافذتين وبعدين نفعل نافذة الإكسيل ونضغط على علامة الويندوز اللي ف لوحة المفاتيح اللي ما بين CTRL و ALT في الناحية الشمال .. لو ملقتهاش يبقا إنت مرجعتش لوحة المفاتيح اللي قلت لك رجعها أو رجعتها بس نصب عليك تاني !! بنضغط على زر الويندوز + سهم شمال مثلا .. ونروح نفعل النافذة التانية ونضغط على زر الويندوز + سهم يمين . بحيث تكون النافذتين جنب بعض عشان نتأمل في جمالهم وهما جنب بعض كدا زي عريس وعروسة .. في محرر الأكواد : هندرج موديول جديد أو مش شرط .. وفي الإكسيل هنروح للتبويب Developer طبعا خلاص عرفنا إزاي نوصله ونضغط على Record Macro قبل ما نضغط منستعجلش نبص الأول على الشكل المرفق مع الأمر هنلاقي علامة دايرة حمرا ولو ركزنا في شريط الحالة اللي في أسفل تطبيق الإكسيل هنلاقي نفس العلامة .. معنى كدا إن تسجيل الماكرو متاح في التبويب وفي شريط الحالة (أضف إلى معلوماتك) لما نضغط عليه هنلاقي نافذة طلعت لنا بنسجل فيها اسم الماكرو واتعرفنا شروط الاسم ..وممكن نعمله اختصار وأنا مش بحب الحركة دي لأن الإكسيل ملياااااااااان اختصارات فممكن يحصل تعارض ما بين اختصارات الإكسيل والاختصار اللي سيادتك هتعمله .. إحنا شوية وهنتعلم إزاي نربط الكود بزر لتشغيله من داخل الإكسيل أو ورقة العمل أفضل. وبعدين بيقولك هتخزنه فين وأنا أفضل تتركه زي ما هو This Workbook لو فتحت القايمة دي هتلاقي فيه مصنف باسم Personal.XLSB ودا بيكون مكانه في البارتشن C: وبيكون مخفي وممكن تظهره عن طريق التبويب View ثم Unhide هتلاقي اسم المصنف موجود ممكن تظهره ..أنا بقا لا أحب أظهره ولا أخفيه أنا بحذفه عشان بيضايقني بظهوره في محرر الأكواد في نافذة المشروع .. دا مجرد ارتياح شخصي وطبعا إنت ليك كامل الحرية في حذفه أو عدم حذفه عشان ممكن شركة مايكروسوفت تزعل مني عموما المصنف دا لزمته ايه .. المصنف معمول إنك تخزن فيه الأكواد الخاصة بك عشان تقدر تنفذها في أي مصنف مفتوح بدون إدراج الكود مرة أخرى (بس يا سلام بقا لو أكوادك كلها اللي بتستعملها محفوظة فيه ومعندكش منها نسخة تانية وفجأة الكهربا تقطع ودا مبيحصلش كتير في مصر والحمد لله تلاقي الويندوز سقط والحمد لله أكوادك في خبر كان ) عموما هي ميزة بس أنا شايفها مش ميزة .. بالنسبة لمسار المصنف دا بيكون في : C:\Users\Administrator\AppData\Roaming\Microsoft\Excel طبعا Administrator دا اسم المستخدم بيختلف من جهاز للتاني .. روح للمسار ده هتلاقي المصنف احذفه وريح بالك (ليك مطلق الحرية) أنا طبعا شرحته بالتفصيل أهو رغم إني مش بستخدمه بس عشان محدش يقول إني قصرت ... آخر حاجة وصف الكود واللي هتكتبه هنا هيظهر لك على شكل تعليق .. بصراحة دي بقا رغم إن فيه كتير بيطنشها بس أنا شايف إنها مهمة .مهم جدا توثق أكوادك بتعليقات عشان تقدر بعد فترة لو حبيت تعدل على الأكواد تكون الأمور واضحة بالنسبة لك .. هتقولي أنا اللي كاتب الكود وحافظ كل كبيرة وصغيرة فيه ... يتهيأ لك والله أنا ساعات أندمج في كتابة كود بشكل معين وبعد فترة أحتاج للكود تاني أقوم أروح للكود الاقي نفسي تايه رغم إني أنا اللي كاتبه ومطبقه قبل كدا .. التوثيق مهم صدقوني .. المهم بيظهر التعليق في الكود بلون أخضر .. طيب إزاي أعمل تعليق طبعا بيكون بالضغط على ' طبعا اللي نظرهم ضعيف مشافوش .. لما يكون اتجاه الكتابة إنجليزي نضغط حرف الطاء اللي بعد العلامة دي بيتم تجاهله تماما يعني متقلقش مش هيتنفذ الأمر لو كان قبله علامة ' دي .. جمد قلبك واضغط أوك هتبدأ عملية التسجيل (وطبعا مننساش المايك والكاميرا يكونوا راكبين في الجهاز وكله تمام بس المشكلة إننا مش محتاجينهم اخلعهم تاني يا مراد بلاش وجع قلب) اضغط أوك ولاحظ علامة التسجيل اللي قلنا عليها من بدري هنلاقيها اتغيرت لشكل مربع صغير لونه أزرق اللي هو دليل إن التسجيل شغال .. العلامة موجودة زي ما قلنا في التبويب وفي شريط الحالة كمان (بيل جيتس مش حارمنا من حاجة أبداً) طيب واحد هيقولي خلص ابدأ تسجيل عشان الوقت هيتحسب في التسجيل هقوله متقلقش التسجيل بيكون لكل حركة إنت بتعملها ملهاش علاقة بالوقت ... طيب نعمل ايه ؟ فكروا معايا أنا بحاول الاقي فكرة .. قول إنت يا جمال .. جمال رد وقال : حدد الخلية اللي فيها اسمي وخلي المحاذاة لليمين .. الخلية اللي فيها اسم جمال هي A3 مثلا ننقر عليها بزر الماوس الأيسر (تعليم تقليدي) يا عم حدد الخلية بس خلاص وبعدين من التبويب Home نعمل محاذاة لليمين (اللي ميعرفش يسأل اللي جنبه) نسيت أقولكم على أهم حاجة (منك لله يا جمال نسيتني كنت عايز أقول ايه) .. عنينا وإحنا نسجل على محرر الأكواد (إنتو نسيتو إن النافذتين مفتوحتين ولا ايه ) عشان نشوف سعادته شغال إزاي .. نبدأ تاني نحدد الخلية A3 واحد هيقولي مفيش حاجة حصلت هقولك عشان إنت واقف في المكان الغلط .. لما بنيجي نسجل الماكرو بيتم إضافة موديول جديد يعني ارجع تاني خطوة لورا واضغط على موديول 2 اللي تم إدراجه من غير ما تاخد بالك.. دبل كليك عليه عشان تتابع من الأول .. معلش يا جماعة أنا مركز على حكاية المتابعة دي عشان تقدروا تستفيدوا من التسجيل نحدد الخلية A3 هوب اقف عندك Range("A3").Select السطر دا اتكتب لوحده يا سلام سلام دا أحلى كلام ولا في الأحلام .. بيكتب لوحده يا عمر .!! طيب نحدد خلية تانية هنلاقي السطر اللي فات اتغير وأصبح A4 ايه الحكاية هي الأسطر مش بتفضل ثابته .. أقولك آه بتفضل ثابتة لكن الشغل بيكون على خلايا محددة يعني إنت حددت A3 وبعد شوية غيرت رأيك وحددت A4 هتلاقي محرر الأكواد غير رأيه عشان مينفعش يشتغل على اتنين في نفس الوقت إلا إذا حددتهم مع بعض نروح للتبوبيب Home وركز عينك على محرر الأكواد هتلاقي With Selection .HorizontalAlignment = xlRight .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With كل دا تم إضافته لما دوست على محاذاة لليمين .. طيب جرب بقا إنت اعمل شوية تنسيقات هتلاقي الدنيا بقت هيصة .. طبعا دا كله ميلزمناش أقصد الأسطر الكتير دي كلها أنا يهمني المفيد وبس ..يعني ممكن أختصر الكود اللي فات أقولك آه وبسطر واحد بس مش بدا كله بالشكل ده Range("A3").HorizontalAlignment = xlRight شفتوا بقا إني أشطر من التسجيل .. طبعا دا اللي يأكد كلامي في الأول إنه مينفعش نستخدم التسجيل بشكل دائم وبردو منستغناش عنه ..طيب ايه الفايدة إننا بندور على اللي يهمنا ونبدأ نكتبه بطريقتنا .. طبعا اتعلمنا إزاي نشير إلى الكائن Range بنفتح بعديه قوس وعلامة تنصيص ومننساش بردو نفس القفلة بس علامة التنصيص الأول وقفلة القوس ..معلش أصل الجو برد شوية عليه.. بعد كدا بنتبعه بنقطة ونكتب الخاصية Property طبعا خلاص استوعبتوها كويس HorizontalAlignment معناها محاذاة أفقية وطبعا قلنا إن الخاصية بيتحدد ليها قيمة وهنا القيم معروفة المحاذاة بتكون إما لليمين (ربنا يجعلنا من أهل اليمين) XlRight وإما توسيط وإما محاذا لليسار XlCenter (واحد متوقع إني هقول ربنا لا يجعلنا من أهل الشمال .. بس أنا هكسفه ومش هقولها) XlLeft >> أظن كدا بقا الكود واضح .. يعني التسجيل اللي اتعمل في 12 سطر (أراهن فيه ناس هتعد ورايا) عملناه في سطر واحد ..بس أنا استفدت ايه إني أقدر أطلع الكلمات اللي عايزاها وأشكلها زي ما أنا عايز .. يعني خلاصة الكلام في الحلقة دي إحنا اشتغلنا خبازين (خدنا العجينة اللي هي الماكرو المسجل .. وشكلناها بمهارة عشان تقدر تطلع بالشكل اللي إحنا عايزينه ) وإلى لقاء مع رغي جديد .. الواجبات : قم بتسجيل ماكرو حدد فيه النطاق من A1:B10 وخلي نوع الخط أي نوع ترغبه وحجم الخط 14 ولون الخط أزرق بلاش الأحمر عشان واحد هيقولي ايه حكايتك مع اللون الأحمر وخلي عريض Bold يعني وخلي المحاذاة الأفقية توسيط .. وطبعا اللي هيجيب الواجب تسجيل ماكرو مش هقبله منه .. أنا عايزك تختصر الأسطر الكتير اللي هتظهرلك في أسطر قليلة ... في رعاية الله كان معكم أخوكم أبو البراء من فرن أوفيسنا (يلا ورورني مين هياكل العيش طازة)
    1 point
×
×
  • اضف...

Important Information