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

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

  1. صالح حمادي

    صالح حمادي

    أوفيسنا


    • نقاط

      10

    • Posts

      1,745


  2. jjafferr

    jjafferr

    أوفيسنا


    • نقاط

      8

    • Posts

      9,814


  3. Shivan Rekany

    Shivan Rekany

    الخبراء


    • نقاط

      7

    • Posts

      3,491


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

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

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


    • نقاط

      4

    • Posts

      13,165


Popular Content

Showing content with the highest reputation on 04 ينا, 2017 in all areas

  1. السلام عليكم و رحمة الله تعالى و بركاته أخوتي الكرام حياكم الله. من المعروف أنه حين نجعل النموذج في وضعية ملأ الشاشة يزداد حجم النموذج و تبقى العناصر بنفس حجمها السابق مما يجعل شكل النموذج غير لائق نوعا ما. و نستطيع أن نتجاوز هذه المشكلة باستعمال الطريقة التالي: نقوم بإنشاء وحدة نمطية جديدة و نلصق بها الكود التالي: Function salah(frm As Form) On Error Resume Next Dim x, y, x1, y1 As Integer Dim moyH, moyW As Double Dim obj As Control Dim str As String x = frm.InsideHeight 'ارتفاع النموذج قبل التكبير y = frm.InsideWidth ' عرض النموذج قبل التكبير DoCmd.Maximize x1 = frm.InsideHeight 'ارتفاع النموذج بعد التكبير y1 = frm.InsideWidth ' عرض النموذج بعد التكبير moyH = x1 / x 'معامل الإرتفاع moyW = y1 / y ' معامل العرض For Each obj In frm.Controls With obj .Left = .Left * moyW .Top = .Top * moyH .Width = .Width * moyW .Height = .Height * moyH .FontSize = .FontSize * moyH End With Next End Function و أيضا أضف هذا الكود في حدث عند التحميل للنموذج: salah Me و لا تنسى أن تغير خاصية النموذج منبثق إلى نعم هذه الطريقة سوف تقوم بتكبير النموذج إلى وضعية ملأ الشاشة و تقوم بتكبير عناصر النموذج لملاءمة الوضعية الجديدة لنموذج. و الله هو الموفق. تكبير العناصر مع ملأ الشاشة لنموذج.rar
    5 points
  2. السلام عليكم ورحمة الله من منا لا يعرف DLookUp والتي تعني "اعلى نظرة" وبالتالي يرجع لنا اعلى نتيجة.. بس.. ليش ماتكون DLookAll "نظرة شاملة" وترجع لنا جميع النتائج مرة واحدة؟ لا قلق، نزل المرفق DLookAll.rar
    2 points
  3. دالة VLOOKUP تعتير أهم دالة فى برنامج Excel وتعطيك قوة هائلة فى عمليات البحث المختلفة . الرابط التالى يحتوى على شرح رائع لدالة VLOOKUP دالة VLOOKUP
    2 points
  4. حيا الله اخوي شفان للعلم ، وهذا الكود كذلك يعتمد على الامر Not الشئ الذي يجب ان يكون على بالنا وقت المشاركة في اي من المواضيع: هذا المنتدى للتعلّم وتعليم الاخرين ، لذلك ، بعض الاوقات ترى اني اضع اكثر من طريقة لحل الموضوع ، وبعض الاوقات اضع توضيح لكل سطر ، وبعض الاوقات افكك الحل لأسطر اكثر حتى يكون سهل على الشباب تغييره لاحقا ، وبعض الاوقات تحذير عن الوقوع في خطأ ومثل ما هو مكتوب في اسفل مواضيعي: في اعتقادي ، مشاركة أكثر من شخص في الرد على السؤال ، هو فائدة للجميع ، فمنه نتعلم الطرق الاخرى للإجابة على السؤال ، ونتعلم خبايا البرمجة فبمشاركة الاخ صالح ، اصبح هذا الموضوع اكثر اثراءً جعفر
    2 points
  5. التعديل جميل ايش رايك نقلل الكود الذي وضعته انت ، بواسطة الامر Not ، ومعناه ، غيّر القيمة الحالية الى القيمة التي ليست فيه: Dim f As Boolean Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount f = rst!done For i = 1 To RC rst.Edit rst!done = Not f rst.Update rst.MoveNext Next i rst.Close: Set rst = Nothing End Sub . جعفر ونعم كنت على علم بهذا ، ولكني كنت اعتقد بأن المبرمج كان سيقفل على المستخدمين تغيير الحقل يدويا ، وبالتالي تكون المشكلة تم حلها ولكن ، وحتى بالحليين (الحل الثاني الذي تركته انا في الكود الاصلي) ، وحتى الطريقة التي تفضلت بها انت ، فنحن نعتمد على قيمة اول حقل ، وربما لم يكون صحيحا ، لذا سيضطر المستخدم الى الضغط على زر التغيير مرتين (بعض الاوقات للحصول على القيمة الصحيحة) جعفر
    2 points
  6. السلام عليكم و رحمة الله تعالى و بركاته. أستأذنك أستاذ القدير جعفر في إضافة تعديل بسيط على الكود الذي قمت بتقديمة. الكود الذي كتبته أستاذي يقوم بتحديد الخانة الغير محددة و نزع التحديد عن الخانة محددة لقد أضفت تعديل بسيط ليقوم الكود بتحديد كامل الخانات أو إزالة التحديد من جميع الخانات كما طلب السائل. Dim f As String Dim rst As DAO.Recordset Set rst = Me.RecordsetClone rst.MoveLast: rst.MoveFirst RC = rst.RecordCount f = rst!done For i = 1 To RC If f = "true" Then rst.Edit rst!done = False rst.Update Else rst.Edit rst!done = True rst.Update End If rst.MoveNext Next i rst.Close: Set rst = Nothing Selection.rar
    2 points
  7. وعليكم السلام تفضل Private Sub cmd_Select_All_Click() '1 ' Dim rst As DAO.Recordset ' Set rst = Me.RecordsetClone ' rst.MoveLast: rst.MoveFirst ' RC = rst.RecordCount ' ' For i = 1 To RC ' rst.Edit ' rst!done = Not rst!done ' rst.Update ' ' rst.MoveNext ' Next i ' ' rst.Close: Set rst = Nothing '2 CurrentDb.Execute ("UPDATE fatora SET done =" & Not Me.done) Me.Requery End Sub . جعفر
    2 points
  8. اتفضل اخي اولا حدد حقل التاريخ وبعدين اكتب yyyy/mm/dd t في خصائص فورمات كما مبينة في الصورة
    2 points
  9. فعلا الكود سريع جزاكم الله خيرا جميعا
    1 point
  10. بارك الله فيك اخي شفان العزيز من كل قلبي اشكرك على المساعدة الجميلة منك ربي يحفظك ان شاء الله وشكرا للمنتدى الاكثر من رائع وانحلت المشكلة
    1 point
  11. السلام عليكم ورحمة الله أرجو أن يكون في الملف المرفق ما تريده (شرط أن تكون قاعدة البيانات بالتنسيق نفسه)... بن علية INQUIRY sheet.rar
    1 point
  12. بفضل الله تم معرفة المشكله بعد عدة محاولات اكتشفت المشكله بمودم شبكة الانترنت قمت باعادة تشغيله والحمدالله انحل الموضوع واتصل البرنامج بموقع الرسايل مباشره الي كان محيرني كل الاربعه الاجهزه بالمحل تظهر نفس الرساله بس الحمدالله تحياتي للجميع
    1 point
  13. السلام عليكم ورحمة الله جرب هذا حسب ما فهمت ايتام الجمعية الشرعية.rar
    1 point
  14. 1 point
  15. نعم انا فهمت قصدك من البداية ، شكرا جعفر
    1 point
  16. استغفر الله واتوب اليه انا ما قلت هذا على باب شيء اخر والله يعلم بل الاكواد السابقة الطريقة الاولى لك او طريقة اخ صالح بيأخذ الوقت اكثر بدلا من الكود اللي انا اضفتها في مشاركتي اي الطريقة الثانية لك
    1 point
  17. الله يرضى عليك استاذي جعفر هل اكو شي اجمل من هذا الكود اوبدات يعمل بسرعة اكبر
    1 point
  18. لقد تعلمت كل هذا بفضل الله تعالى و بفضل الإحتكاك بخبرتكم النيرة في هذا المجال. و رغم تواضعك الكبير إلا أنك تمتلك خبرة كبيرة في VBA و لا أحد يستطيع أن ينكر ذلك (كيف لا و التواضع سيمة من سيمات العمالقة) الله يحفظ يا غالي مشكور على المداخلة
    1 point
  19. اسماء الله الحسنى بالصورة والشرح مع شاشة افتتاحية لمدة زمنية للاخ وائل المصرى على الرابط التالى الفيديو حمل الملف اسماء الله الحسنى.rar
    1 point
  20. تفضل كما تريد برنامج الجمعية 2017.rar
    1 point
  21. اخي Shivan Rekany و الله العظيم لا اعرف كيف اشكرك على مساعدتك الدائمة لي و لجميع الاعضاء بارك الله فيك و جزاك الله عنا كل خير
    1 point
  22. المعلومات فى هذا الموضوع قيمه جدا جدا جدا والفكرة ولا اروع انا اول مره بصراحة اشوف كده ولم تخطر فى بالى الفكرة مطلقا من قبل كل ما كان يدور بخلدى هو ضبط الارتساء كما تقدم من رأى اخونا الحبيب عبد الله قدور ولكن قطعا هذا الموضوع طفرة ويستحق الاعجاب ولو كان هناك اكتر من اعجاب للموضوع الواحد لقمت بوضع الحد الاقصى للاعجاب ولن يوفى ايضا للموع حقة كل الشكر والتقدر لحضرتك على الموضوع والافكار الاكثر من رائعه اسال الله تعالى لكم الصلاح والفلاح والخير كله ان شاء الله وفى مزيد من التدقم والرقى والنجاح فدائما تبهرنا كما عهدناك
    1 point
  23. احنا اخوة من ينطي الجواب مش مهم بل المهم هو ان المسأل يوصل المطلوب ولا داعي للشكر علواجب وشكرا لك
    1 point
  24. اعتذر لضيق وقتى بالامس من عدم محاولة تلبية طلب اخينا الحبيب الفايع وكل الشكر والتقدير لاخينا الحبيب Shivan Rekany النتيجة رائعة جدا جدا
    1 point
  25. هلا وغلا اخونا صالح / حياك الله يعطيك الف عافية ايوه اتحفنا بافكارك الجميلة تسلم اناملك
    1 point
  26. هذا الفورم عندما تقوم بتكبيره في وضعية ملأ الشاشة يزداد حجم النموذج فقط بينما العناصر الموجودة بداخل النموذج تبقى صغيرة لاحظ شكله الآن بعد التعديل قم بتكبير و تصغير النموذج و لاحظ جيدا الفرق form.rar
    1 point
  27. أطال الله في عمرك و جعل أعمالك و أعمالنا خالصة لوجهه الكريم العفو أخي القعر و فيك بارك الله
    1 point
  28. استاذى اخى الحبيب بعد كل عام وانتم الى الله اقرب واسال الله تعالى ان يجعل عامكم هذا ان شاء الله من اجمل الاعوام بكثرة الطاعات وبتحقق الامانى والاحلام والاهداف والنجاحات ان شاء الله اعتذر لغيابى ولتأخرى عنكم ولكن يعلم الله لم يمنعنى عنكم الا الشدائد اساالكم الدعوات بظهر الغيب
    1 point
  29. تحية مني لخبراء هذا الصرح العظيم أنا أستخدم في عملي برنامج الفواتير والمخزون الشامل للأستاذ عمرو السيد وهو عمل عظيم لرجل عظيم ومجاني أيضا وأنا أحب أن أعمل عليه سنة بسنة وأحاول أن أصفر قاعدة البيانات وأبقي فقط على الأصناف والعملاء والموردون ولكن لا أستطيع مما يضطرني لإعادة كتابة كل ذلك مرة أخري . حاولت التواصل مع الأستاذ عمرو ورد علي بالفعل ووعدني خيرا ولكن يبدو أن وقته لايسمح اشتريت برنامج آخر ولكنه لم يعجبني لإعجابي ببرنامج الأستاذ عمرو وسهولة العمل عليه . وإليكم البرنامج وكل ما أطلبه تصفير البرنامج مع ترك أسماء الأصناف وأسماء العملاء وأسماء الموردين جزاكم الله خيرا وكل عام وأنتم بخير . رابط البرنامج http://www.mediafire.com/file/t673ifq4692hef6/بسمة+من+يوم+3-4-2016Backup+06-11-2016%2C02.57.08+مBackup+06-11-2016%2C03.16.49+م.xlsb
    1 point
  30. أو يمكن ببساطة نسخ الجدول إلى إكسل ومن ثم تدويره وإعادة نسخه إلى الوورد
    1 point
  31. الأخ الكريمعبد القادر محمد مهدى جرب المعادلة التالية =IF(F1="";"";IF(F1>0;100;IF(F1=0;7.5;0)))
    1 point
  32. ما شاء الله تبارك الله فكرة ممتازة و مشروع ضخم و تحتاج لفريق عمل و Focal Points و وبتعاون الاعضاء الكرام سيرى هذا المشروع النور و سيكون مكتبة الصرح ..الزاخرة بالشرح بارك الله فيك استاذنا الغالي ياسر و انت فعلا عاشقا للأكسل تقبل تحياتي
    1 point
  33. تسلم يا أسد .. الله ينور عليك بس دي محتاجة قعدة طويلة من حضرتك عشان تضيفها للمكتبة .. يلا توكل على الله وإنت اشتغل الجزء الأول وأنا هشتغل الجزء الثاني ونشوف حد يتبرع ويشتغل الجزء الثالث أنا مش هشتغل لوحدي !!
    1 point
  34. ايه رائيك بقى انا مش مشارك وعلى فكرة انا كمان مبسوط انى مش هشارك ليك شوق فى حاجه المهم بقى خلاص متزعلش هشارك افرح بقى هدخل وايدى مش فاضية جايب معايا زيارة من استاذنا الكبير محمد يحياوى الغائب عنا والحاضر باعماله المرفق بقى من مكتبة استاذنا محمد يحياوى دى من الكنوز اللى محتفظ بيها وانا عمرى ما هبخل عليك باى كنز يا كبير تقبل تحياتى وربنا يوفقك الجزء الأول.pdf الجزء الثاني.pdf الجزء الثالث.pdf
    1 point
  35. الأخ الحبيب والأستاذ القدير أحمد عبد الناصر يشرفني مرورك الكريم بالموضوع بارك الله فيك وجزاك الله خير الجزاء ... النسخة الأولى من المكتبة بعد إضافة أكواد الأخ الجموعي والأخ مختار والأخ أحمد عبد الناصر ... أضفت مجلد باسم Files ليحتوي على المرفقات مع الأكواد التي يلزمها مرفقات فقط .. وسنحاول جاهدين ألا نكثر من المرفقات (للضرورة فقط) ... إليكم الإصدار الأول من المكتبة بعد التنقيح والتصحيح ... Codes Library v1.0.rar
    1 point
  36. السلام عليكم اسعد الله اوقاتكم موضوع :تصدير بيانات الي برنامج الاكسيس http://www.officena.net/ib/index.php?showtopic=44222&page=2#entry264825 كود Sub cool() ConnString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ActiveWorkbook.Path & "\export.accdb ;Persist Security Info=True" Set oCn = New ADODB.Connection oCn.ConnectionString = ConnString oCn.Open sSQL = "delete from t ;" oCn.Execute sSQL sSQL = " INSERT INTO t SELECT * FROM [Excel 12.0;HDR=YES;DATABASE=" & ActiveWorkbook.FullName & "].[Sheet1$a:b] ;" oCn.Execute sSQL End Sub تحياتي Codes Library.rar
    1 point
  37. الأخ الفاضل خيماوي كوول خليك كوول يا مان ومتدخلش وايدك فاضية ..مش معنى إن عدد مشاركاتك قليل إنك متساهمش .. ساهم واتبرع ولو بكود .. فكرتني بمستشفى 5757 تعاطفك لوحده مش كفاية .. وانا بقول تشجيعك لوحده مش كفاية شارك ولو بكود شارك ولو بكود ..دا هيكون شعار المشروع الكبير .. شارك ولو بكود .. خلي المشروع مشهود
    1 point
  38. الله يجزيكم كل خير ويوفقكم جميعاً ... وعمل رائع ... بارك الله فيكم ...
    1 point
  39. تسلم أخي مختار نورت الموضوع أخي وحبيبي مختار ودي عادة الصعايدة مش بيدخلوا وايديهم فاضية ربنا يبارك فيك يا كبير بس لي رجاء عشان الموضوع ميكونش تكدس في الأكواد وخلاص وتتوه الأكواد بين الصفحات مع مرور الوقت .. نحاول دائما أن نلم شتات الأكواد ..الأكواد من هنا وهناك يتم تجميعها ها هنا ... فالرجاء تحميل الملف بعد ذلك ووضع الكود بعنوان مناسب ليسهل للباحث فيما بعد البحث عن مبتغاه .. أرجو أن تكون الفكرة قد وصلت
    1 point
  40. أستاذى العزيز بارك الله فيك الفكرة جميلة جعلها الله فى ميزان حسناتك أنا بزورك اهــــه وايدى مش فاضيه : ' الكود التالى للحفظ والخروج التلقائى من اكسل يوضع فى حدث الـ Workbook Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False ThisWorkbook.Save Application.Quit End Sub الكود التالى : مديول عادى للحفظ والخروج من الملف Sub Close_File() ThisWorkbook.Save ThisWorkbook.Close End Sub الكود التالى مديول عادى للحفظ والخروج نهائيا من اكسل Sub Close_Excel() ThisWorkbook.Save Application.Quit End Sub ملحوظه هامة أرجو تعديل المرفق بحيث يكون العمل من خلال اليوزرفورم فقط تحياتى لكم
    1 point
  41. شروحات أكسس الصوتية والمرئية دروس الأستاذ عبدالفتاح كيره شرح 3 طرق لفتح نموذج من داخل نموذج آخر الاستفادة من خاصية القيمة الافتراضية للحقول شرح التحقق من عدد أرقام الرقم القومى شرح استخلاص ت الميلاد من الرقم القومى دالة mid-val شرح دالة DateSrial شرح البحث عن اسم يتضمن أى حروف البحث بمعلومية شرطين باستخدام استعلام و كود شرح استعلام إلحاق استعلام الإلحاق بدون تكرار مع تعديل بعض الحقول الملحقة كيف تفتح نموذجا على سجل محدد كيفية التحكم فى حقل بنموذج فرعى من خلال النموذج الرئيسى كيفية البحث عن السجلات و الانتقال إليها التنقل بين السجلات في نموذج أكسيس بخطوات محددة التخطيط لإنشاء قاعدة بيانات ======================================================== تعلم الاكسيس ( باللغه العربيه صوت و صوره ) لــ admiral http://www.officena.net/ib/index.php?s=c6d3bad3a53a5ac634ea791d48f6472c&showtopic=31301 ======================================================== شرح اكسس 2003 فيديو (1)... لقنديل الصياد http://www.officena.net/ib/index.php?showtopic=48569 شرح اكسس 2007 (2) http://www.officena.net/ib/index.php?showtopic=51147 شرح اكسس 2010 (3) http://www.officena.net/ib/index.php?showtopic=51150 ======================================================== تعليم برنامج أكسس 2010 لـــ ALSHAMAL http://www.officena.net/ib/index.php?showtopic=54641 ======================================================== أكسيس 2013 شروحات متنوعة الاستاذ عبداللطيف طراقجي شرح برنامج مايكروسوفت أكسيس 2013 http://www.officena.net/ib/index.php?showtopic=59950&hl= الدرس الأول إنشاء و إدارة قواعد البيانات http://www.officena.net/ib/index.php?showtopic=59961&hl= الدرس الثاني: إدارة العلاقات و المفاتيح في برنامج الأكسيس http://www.officena.net/ib/index.php?showtopic=60073&hl= الدرس الثالث: التنقل من خلال قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60177&hl= الدرس الرابع: حماية و صيانة قواعد البيانات http://www.officena.net/ib/index.php?showtopic=60261&hl= الدرس الخامس: طباعة و تصدير قاعدة البيانات http://www.officena.net/ib/index.php?showtopic=60376&hl= الدرس السادس: إنشاء الجداول في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60468&hl= الدرس السابع: تنسيق الجداول في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60584&hl= الدرس الثامن: إدارة السجلات في جداول قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60681&hl= الدرس التاسع: إنشاء و تعديل الحقول في جداول قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60809&hl= الدرس العاشر: إنشاء الاستعلامات في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60893&hl= الدرس الحادي عشر: إنشاء الاستعلامات الاجرائية في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=60988&hl= الدرس الثاني عشر: تعديل الاستعلامات في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61086&hl= الدرس الثالث عشر: استخدام و تجميع الحقول المحسوبة في الاستعلام http://www.officena.net/ib/index.php?showtopic=61177&hl= الدرس الرابع عشر: إنشاء النماذج في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61265&hl= الدرس الخامس عشر: تعيين عناصر تحكم النموذج في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61351&hl= الدرس السادس عشر: تنسيق النماذج في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61409&hl= الدرس السابع عشر: إنشاء التقارير في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61468&hl= الدرس الثامن عشر: تعيين عناصر تحكم التقرير في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61561 الدرس التاسع عشر و الأخير: تنسيق التقارير في قاعدة بيانات أكسيس http://www.officena.net/ib/index.php?showtopic=61634
    1 point
  42. السلام عليكم ورحمة الله عيدكم سعيد وكل عام وأنتم بخير.... أخواني الكرام، أخي الكريم محمود إن العبارة (ISNONTEXT(A1:H1 في المعادلة =ISNONTEXT(A1:H1)*(SUM(A1:H1)) ليس لها أي تأثير على نتيجة المعادلة ويمكن حذفها والاكتفاء فقط بالجزء (SUM(A1:H1... المهم أن لا نستعمل الرمز "+" لجمع خلايا (متجاورة أو غير متجاورة) في حالة احتواء بعض من هذه الخلايا على نصوص... والله أعلم أخوكم بن علية
    1 point
  43. يتم ذلك عن طريق إستخدام معادلة IF حيث يتم إحتساب القيم النصية بصفر مثلاً مثال =IF(AND(L54="غ";W54="غ";AH54="غ";AT54="غ";BH54="غ";BU54="غ";CG54="غ");0;SUM(L54;W54;AH54;AT54;BH54;BU54;CG54)) على إعتبار إنك بتجمع خلايا غير متجاورة وبعضها به حرف غ فى السطر الـ 54
    1 point
  44. 3. الفرق بين Range و Cells : - يستخدم الأسلوب Range للإشارة إلى مجال الخلايا و ذلك عن طريق كتابة المجال باستخدام نظام الترميز A1 (تتم الإشارة إلى خلية ما بإدخال حرف العمود متبوعاً برقم الصف) ، لاحظ الأكواد التالية : Sub Test1() Sheets("Sheet1").Range("A1").ClearContents End Sub الكود السابق يقوم بمسح القيم الموجودة في الخلية A1 . Sub Test2() Sheets("Sheet1").Range("B2:C5").ClearContents End Sub الكود السابق يقوم بمسح القيم الموجودة في المجال B2:C5 . Sub Test3() Sheets("Sheet1").Range("A2:B3,D3,E5:G7,H11").ClearContents End Sub الكود السابق يقوم بمسح القيم الموجودة في المجالات A2:B3 ، D3 ، E5:G7 ، H11 . - أما الأسلوب Cells فيستخدم للإشارة إلى الخلايا المختلفة عن طريق كتابة رقم صف الخلية يليه رقم العامود ، لاحظ الكود التالي : Sub Test4() Sheets("Sheet1").Cells(2, 5).ClearContents End Sub الكود السابق يقوم بمسح القيم الموجودة في الخلية الواقعة في الصف الثاني و العامود الخامس من الورقة Sheet1 (أي الخلية E2). بالنسبة لقدرة الأسلوب Cells على الإشارة للمجالات المختلفة فهي محدودة ، ولا يستطيع ذلك إلى عن طريق الاستعانة بالأسلوب Range ، لاحظ الكود التالي : Sub Test5() Sheets("Sheet1").Range(Cells(2, 3), Cells(5, 7)).ClearContents End Sub الكود السابق يقوم بمسح القيم الموجودة في المجال C2:G5 الموجود في الورقة Sheet1 . مما سبق فإنه يبدو لنا أن التعامل مع الأسلوب Range هو أسهل بكثير من التعامل مع مثيلها Cells ، ولكن مهلاً ....... فالأسلوب Cells يمتلك مرونة عالية في التعامل مع الأهداف المتغيرة ، لاحظ الكود التالي : Sub MultiplicationTable1() Dim i As Byte, ii As Byte With Sheets("Sheet1") For i = 1 To 10 For ii = 1 To 10 .Cells(i, ii) = i * ii Next ii Next i End With End Sub الكود السابق هو كود مدرج في أحد مشاركاتنا السابقة ، ويقوم بإنشاء جدول الضرب في الورقة Sheet1 . لاحظ مقدار المرونة الذي يوفره لنا الأسلوب Cells ، و فكر بالصعوبات التي من المحتمل أن تواجهنا عند استخدام الأسلوب Range (و خصوصاً عند التعامل مع ترتيب الأعمدة) . مثال آخر يظهر مرونة الأسلوب Cells : بفرض أن لدينا جدول متوضع بين العامودين B و E ، ونريد إنشاء زر أمر لمسح قيم أي سجل بالاعتماد على رقمه . بالاعتماد على الأسلوب Cells فإننا نستطيع كتابة الكود التالي : Sub DeleteRecord1() Dim NumberRow As Long NumberRow = Application.InputBox(prompt:="ادخل رقم الصف", Title:="رقم الصف", Type:=1) If NumberRow = False Or NumberRow > 65536 Then Exit Sub Sheets("Sheet1").Range(Cells(NumberRow, 2), Cells(NumberRow, 5)).ClearContents End Sub الآن إذا أردنا الاعتماد على الأسلوب Range في الكود السابق عوضاً عن الأسلوب Cells ، فإننا سنحتاج لتعريف متغير إضافي MyRange من نوع نص و كتابة سطر إضافي لإنشاء المرجع المطلوب قبل استخدامه في الأسلوب Range ، لاحظ الكود التالي : Sub DeleteRecord2() Dim NumberRow As Long Dim MyRange As String NumberRow = Application.InputBox(prompt:="ادخل رقم الصف", Title:="رقم الصف", Type:=1) If NumberRow = False Or NumberRow > 65536 Then Exit Sub MyRange = "B" & NumberRow & ":E" & NumberRow Sheets("Sheet1").Range(MyRange).ClearContents End Sub بنظرة بسيطة نلاحظ أ الكود الأول هو أكثر كفاءة من الكود الثاني . لأخذ العلم ، فإن الطريقة السابقة أدرجت لتبيان الفرق بين الأسلوبين ، وذلك مع العلم بأنه يمكن حل المشكلة السابقة بطريقة أكثر بساطة و ذلك إذا ما اعتمدنا على الأسلوب Offset . ملاحظات هامة جداً عن الأسلوبين Cells و Range : 1. عندما تجري عملية مناقلة بين خلايا معينة ، فإنه لا يشترط استخدام نفس الأسلوب للإشارة إلى الخلايا أو النطاقات في كلتا المجموعتين : فمثلاً إذا أردنا لصق قيم المجال A1:A5 في المجال B1:B5 فإننا نستطيع عمل ذلك باستخدام أي طريقة من الطرق التالية : Sub Test6() With Sheets("Sheet1") Range("B1:B5").Value = Range("A1:A5").Value End With End Sub Sub Test7() With Sheets("Sheet1") Range(Cells(1, 2), Cells(5, 2)).Value = Range(Cells(1, 1), Cells(5, 1)).Value End With End Sub Sub Test8() With Sheets("Sheet1") Range(Cells(1, 2), Cells(5, 2)).Value = Range("A1:A5").Value End With End Sub Sub Test9() With Sheets("Sheet1") Range("B1:B5").Value = Range(Cells(1, 1), Cells(5, 1)).Value End With End Sub 2. قدرة كلا الأسلوبين Cells و Range على التكيف مع مجموعات الأهداف المختلفة : وهذه برأيي أهم ميزة يمتلكها هذين الأسلوبين ، وتقوم هذه الميزة على أن الأسلوب يشير للموضع النسبي للهدف المحتضن بالاعتماد على الهدف الحاضن له . لفهم هذه الميزة بشكل أوضح لاحظ الكودين التاليين : Sub Cells_Place1() Dim MyRange As Range Set MyRange = Sheets("Sheet1").Range("C5:H10") Sheets("Sheet1").Cells(1, 1).Value = "هذه الخلية الأولى من الورقة Sheet1" MyRange.Cells(1, 1).Value = "هذه الخلية الأولى من المجال MyRange" End Sub Sub Cells_Place2() Dim MyRange As Range Set MyRange = Sheets("Sheet1").Range("C5:H10") Sheets("Sheet1").Range("A1").Value = "هذه الخلية الأولى من الورقة Sheet1" MyRange.Range("A1").Value = "هذه الخلية الأولى من المجال MyRange" End Sub نلاحظ أن الأسلوبين Cells و Range قد اعتمدا على كل من الهدفين Sheet1 و MyRange ـ (C5:H10) من أجل تحديد الهدف الناتج (المحتضن) . بالنسبة لي ، فإنني أعتقد أن الأسلوب Cells أقدر على التعامل مع هذه الميزة بصورة أكثر كفاءة ، لاحظ الكود التالي : Sub Cell_Index() On Error GoTo NoRange Dim MyRange As Range Dim NumberRow As Long Dim NumberColumn As Long Set MyRange = Application.InputBox(prompt:="أدخل مجال الخلايا الذي تريده", Title:="مجال الخلايا", Type:=8) On Error GoTo 0 For NumberRow = 1 To MyRange.Rows.Count For NumberColumn = 1 To MyRange.Columns.Count MyRange.Cells(NumberRow, NumberColumn).Value = NumberRow & "×" & NumberColumn Next NumberColumn Next NumberRow Exit Sub NoRange: If Err = 424 Then Exit Sub Else MsgBox Err.Description End If End Sub الكود السابق يقوم بإدراج ترتيب كل خلية (رقم صفها و عامودها) وذلك بالنسبة للهدف الحاضن MyRange . لا تقلق أخي إذا لم تفهم هذه الميزة بصورة كاملة ، وذلك لأن لنا عودة معها عندما نقوم بشرح الأسلوبين CurrentRegion و UsedRange . تحياتي
    1 point
×
×
  • اضف...

Important Information