السلام عليكم ورحمة الله وبركاته
إخواني وأحبابي في الله
يسعدني ان أقدم لكم درس تعليمي بسيط عله يكون لبنة في بناء هذا الصرح العملاق .. و
الدرس سيكون في التعامل مع النطاق واستخدام الخاصية CurrentRegion
بفرض أن لديك بيانات في ورقة العمل والبيانات تبدأ من الخلية A1 ..
تعودنا للإشارة للنطاق أن نقوم باستخدام Range يليها قوس ثم قوس تنصيص ونكتب النطاق المطلوب ثم تغلق الأقواس بهذا الشكل
CODE
Range("A1").Select
وهنا استخدمنا الحدث Select لاختيار الخلية
وللإشارة إلى نطاق أكبر من خلية واحدة .. تكون العملية مشابهة لما سبق ، بهذا الشكل
CODE
Range("A1:C10").Select
وهنا حددنا نهاية النطاق لأننا قد نكون نعرف مسبقاً حجم البيانات التي لدينا ، أما إذا كنا نجهل حجم البيانات فإننا نقوم بمعرفة رقم آخر صف وعلى أساسه نقوم بتحديد النطاق .. وقد قدمت من قبل درس كامل في هذه النقطة
وإليكم مثال بسيط
CODE
Sub Last_Row()
Dim lr As Long
lr = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:C" & lr).Select
End Sub
** الآن نتعرف على الخاصية CurrentRegion ومعناها النطاق الحالي .. ولفهم الخاصية قم بتحديد الخلية A1 في البيانات بالشكل التالي ثم اضغط Ctrl + A >>
ستجد أن النطاق من أول الخلية A1 وحتى الخلية C10 تم تحديده .. ولكن السؤال لما لم يتم تحديد العمود E مع النطاق ؟ أوليس هذا من ضمن النطاق الحالي؟
الإجابة : لا ليس ضمن النطاق والسبب هو أن العمود الرابع D فارغ تماماً من البيانات مما جعل النطاق الحالي للخلية A1 يفصل هذا الجزء عن النطاق
>> جرب وضع أي بيان في أي خلية في النطاق من D1 إلى D10 .. ثم حدد الخلية A1 واضغط Ctrl + A ستجد أن النطاق الحالي سيكون من A1 وحتى E10
نفس الكلام مع الصفوف .. أي إذا وجد صف فارغ فإنه سيكون فاصل بين النطاق الحالي والنطاق الذي يليه
جرب مسح كلمة Note في الخلية C9 وكرر عملية التحديد سنجد أن النطاق الحالي للخلية A1 ممتد من A1 إلى C8
** مثال تطبيقي :
CODE
Sub CurrentRegion_Demo()
Dim r As Range
Set r = Range("D4").CurrentRegion
MsgBox "Current Region Address For D4 Is | " & r.Address
MsgBox "First Cell In The Current Region Is | " & r(1).Address
MsgBox "Last Cell In The Current Region Is | " & r(r.Count).Address
MsgBox "Row 9 Column 3 In Current Region Is | " & r(9, 3).Value
MsgBox "Offset From D4 With 3 Rows Down | " & r(1).Offset(3).Value
End Sub
بالنظر إلى الشكل التالي
قم بوضع الكود السابق في موديول عادي ثم استخدم مفتاح F8 لتتبع تنفيذ الكود سطر بسطر
أول ضغطة لمفتاح F8 ستجد في نافذة اللوكال أن قيمة النطاق r تساوي Nothing أي لا شيء لأنه لم يتم تعيين قيمة للنطاق بعد ..
وبالضغط مرتين على F8 ستجد أنه تم تعيين النطاق ليكون النطاق الحالي للخلية D4 .. وفي الأسطر التالية كيفية التعامل مع النطاق ومعرفة عنوان النطاق أو قيمة النطاق لأي خلية داخل النطاق ..
أترككم مع تجربة الكود بأنفسكم ...
حمل الملف المرفق من هنا
أرجو أن يكون الدرس مفيد لكم ، وأترككم في رعاية الله
كان معكم أخوكم في الله / ياسر خليل أبو البراء