السيفاني قام بنشر يناير 11, 2016 قام بنشر يناير 11, 2016 السلام عليكم يااخوان لدي استفسار بخصوص الكود Range طبعا هذا الكود بحسب معلوماتي المتواضعة هو كائن Object لكن هل يصح ان يكون في بعض الاحيان متغير Dim R1 As Range بمعنى اخر هل يوجد متغير من نوع نطاق او مدى ؟
ياسر خليل أبو البراء قام بنشر يناير 11, 2016 قام بنشر يناير 11, 2016 أخي الكريم السيفاني نعم المدى أو النطاق يتم تعيين متغير له .. وهذا هو الأصل لأنه في كثير من الأحيان يتم التعامل مع نطاقات مجهولة بالنسبة إلينا .. فمثلاً لنفترض انك ستقوم بالتعامل مع الخلايا في العمود الأول من الصف الأول إلى آخر صف به بيانات ..فيمكن استخدام حلقة تكرارية لكل خلية (والخلية تعتبر نطاق في حد ذاتها) ..وذلك لتنفيذ شيء معين على الخلايا أو النطاقات .. لذا يمكن استخدام المتغير باسم R1 ليعبر عن كل خلية أو نطاق داخل العمود ...بهذا الشكل Dim R1 As Range ثم لعمل حلقة تكرارية لكل كائن أو خلية أو نطاق داخل النطاق الأكبر في العمود الأول يمكن استخدام السطر التالي الذي سيتعامل مع النطاق بدءاً من الخلية A1 وحتى آخر خلية بها بيانات في العمود الأول .. For Each R1 In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) Next R1 وما بين جزئي الحلقة التكرارية يتم تنفيذ أسطر الكود لكل خلية أو كائن أو نطاق على حدا .. لنفترض أن هناك مسافات زائدة في بداية النص أو نهايته .. جرب السطر التالي ليتم التعامل مع الكائن بأن يعطي أمر بإزالة المسافات باستخدام الدالة TRIM .. ليصبح السطر بهذا الشكل R1.Value = Trim(R1.Value) وأخيراً يصبح الشكل الكامل للكود بهذا الشكل Sub RangeVariable() Dim R1 As Range For Each R1 In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) R1.Value = Trim(R1.Value) Next R1 End Sub أرجو أن تكون الصورة قد اتضحت 1
ابوحمزه المصرى قام بنشر يناير 11, 2016 قام بنشر يناير 11, 2016 (معدل) اخى الكريم ابو البراء بارك الله فيك ... عند تجربة الكود لم يتم تنفيذ المطلوب ... هل الخطأ فى تطبيق المثال. RangeVariable.rar تم تعديل يناير 11, 2016 بواسطه صلاح المصرى
ياسر خليل أبو البراء قام بنشر يناير 11, 2016 قام بنشر يناير 11, 2016 أخي الكريم صلاح تم تجربة الملف المرفق من قبلك ويعمل بشكل جيد .. الكود يقوم بإزالة المسافات الزائدة في بداية أو نهاية النص فقط ولكن لإزالة المسافات في وسط النصوص يتم التعديل بإضافة كلمة Application ثم يتبعها نقطة ثم اسم الدالة ليصبح الكود بهذا الشكل Sub RangeVariable() Dim R1 As Range For Each R1 In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row) R1.Value = Application.Trim(R1.Value) Next R1 End Sub تقبل تحياتي 3
ابوحمزه المصرى قام بنشر يناير 11, 2016 قام بنشر يناير 11, 2016 شكراً اخى الكريم ابو البراء جزاك الله كل خير ..
السيفاني قام بنشر يناير 11, 2016 الكاتب قام بنشر يناير 11, 2016 جزاك الله خيرا استاذي القدير ياسر وصلت الفكرة لكن البرنامج سيتعامل مع هذا المتغير Range على اساس اي نوع من البيانات ؟ من اجل حجز مكان له في الذاكرة ؟ هل integer ؟ رقمي ؟ String ؟ نصي ؟ Variant ؟ عام ؟ وتقبل ودي واحترامي على تجاوبك معنا نحن طلابك المبتدئين
ياسر خليل أبو البراء قام بنشر يناير 12, 2016 قام بنشر يناير 12, 2016 أخي الكريم السيفاني .. المتغير Range من النوع Object أي كائن وهذا النوع يشغل 4 بايت من مساحة الذاكرة وإليك تفصيل لكل نوع من أنواع البيانات والمساحة التي يشغلها بالذاكرة VBA Data Types.rar 1
السيفاني قام بنشر يناير 12, 2016 الكاتب قام بنشر يناير 12, 2016 5 ساعات مضت, ياسر خليل أبو البراء said: أخي الكريم السيفاني .. المتغير Range من النوع Object أي كائن وهذا النوع يشغل 4 بايت من مساحة الذاكرة وإليك تفصيل لكل نوع من أنواع البيانات والمساحة التي يشغلها بالذاكرة VBA Data Types.rar اشكرك استاذي ابو البراء سوال اخر مرفق صورة عندما نكتب كود يعرض لنا محرر الاكواد اقتراحات في بعض الاحيان قائمة منسدلة للخصائص و الافعال لكن في بعض الاحيان بيطلع رسالة توضيحية توضح مكونات الامر هذا ماينقصني فهمه حاليا ماهذا بالضبط ؟ 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.