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

استفسار بخصوص الكود Range


الردود الموصى بها

السلام عليكم يااخوان

لدي استفسار بخصوص الكود Range

طبعا هذا الكود بحسب معلوماتي المتواضعة هو كائن Object

لكن هل يصح ان يكون في بعض الاحيان متغير

Dim R1 As Range

بمعنى اخر هل يوجد متغير من نوع نطاق او مدى ؟

رابط هذا التعليق
شارك

أخي الكريم السيفاني

نعم المدى أو النطاق يتم تعيين متغير له .. وهذا هو الأصل لأنه في كثير من الأحيان يتم التعامل مع نطاقات مجهولة بالنسبة إلينا ..

فمثلاً لنفترض انك ستقوم بالتعامل مع الخلايا في العمود الأول من الصف الأول إلى آخر صف به بيانات ..فيمكن استخدام حلقة تكرارية لكل خلية (والخلية تعتبر نطاق في حد ذاتها) ..وذلك لتنفيذ شيء معين على الخلايا أو النطاقات ..

لذا يمكن استخدام المتغير باسم 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

أرجو أن تكون الصورة قد اتضحت

images.jpg.72eae73df0e4f3ded5c1850db9aa2

  • Like 1
رابط هذا التعليق
شارك

اخى الكريم ابو البراء بارك الله فيك ... عند تجربة الكود لم يتم تنفيذ المطلوب ... هل الخطأ فى تطبيق المثال.

RangeVariable.rar

تم تعديل بواسطه صلاح المصرى
رابط هذا التعليق
شارك

أخي الكريم صلاح

تم تجربة الملف المرفق من قبلك ويعمل بشكل جيد .. الكود يقوم بإزالة المسافات الزائدة في بداية أو نهاية النص فقط

ولكن لإزالة المسافات في وسط النصوص يتم التعديل بإضافة كلمة 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

تقبل تحياتي

images.jpg.c13ec619646977d9b1d1d2fbfb086

 

  • Like 3
رابط هذا التعليق
شارك

جزاك الله خيرا استاذي القدير ياسر 

وصلت الفكرة

لكن البرنامج سيتعامل مع هذا المتغير Range

 على اساس اي نوع من البيانات ؟  من اجل حجز مكان له في الذاكرة ؟ هل

integer ؟ رقمي ؟

String ؟ نصي ؟

Variant ؟ عام ؟

وتقبل ودي واحترامي على تجاوبك معنا نحن طلابك المبتدئين :fff::wub:

رابط هذا التعليق
شارك

أخي الكريم السيفاني ..

المتغير Range من النوع Object أي كائن وهذا النوع يشغل 4 بايت من مساحة الذاكرة

وإليك تفصيل لكل نوع من أنواع البيانات والمساحة التي يشغلها بالذاكرة

index.jpg.c7640e584ca93e528808a9bda5f51f

VBA Data Types.rar

  • Like 1
رابط هذا التعليق
شارك

 

 

5 ساعات مضت, ياسر خليل أبو البراء said:

أخي الكريم السيفاني ..

المتغير Range من النوع Object أي كائن وهذا النوع يشغل 4 بايت من مساحة الذاكرة

وإليك تفصيل لكل نوع من أنواع البيانات والمساحة التي يشغلها بالذاكرة

index.jpg.c7640e584ca93e528808a9bda5f51f

VBA Data Types.rar

اشكرك استاذي ابو البراء

سوال اخر مرفق صورة

عندما نكتب كود يعرض لنا محرر الاكواد اقتراحات 

في بعض الاحيان قائمة منسدلة للخصائص  و الافعال

لكن في بعض الاحيان بيطلع رسالة توضيحية توضح مكونات الامر

هذا ماينقصني فهمه حاليا  ماهذا بالضبط ؟

 

بدون عنوان.png

  • Like 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information