كائن نطاق VBA Excel
⚡ ملخص ذكي
يمثل كائن النطاق في Excel VBA خلية واحدة أو مجموعة من الخلايا في ورقة العمل. تشرح هذه الصفحة تسلسل الكائن، وخصائص النطاق والخلايا، وتحديد الخلايا والإشارة إليها، وقراءة القيم وكتابتها، وخاصية الإزاحة.

ما هو نطاق VBA؟
يمثل كائن نطاق VBA خلية أو خلايا متعددة في ورقة عمل Excel. إنه أهم كائن في Excel VBA. باستخدام كائن نطاق Excel VBA، يمكنك الرجوع إلى،
- خلية واحدة
- صف أو عمود من الخلايا
- مجموعة مختارة من الخلايا
- مجموعة ثلاثية الأبعاد
كما ناقشنا في الدرس السابق، تُستخدم لغة VBA لتسجيل وتشغيل الماكرولكن كيف يحدد VBA البيانات التي تحتاج إلى معالجة في ورقة العمل؟ هنا تكمن فائدة كائنات النطاق في VBA.
مقدمة إلى الكائنات المرجعية في VBA
الرجوع إلى كائن نطاق VBA الخاص بـ Excel ومؤهل الكائنات.
- تصفيات الكائن: يستخدم هذا للإشارة إلى الكائن. فهو يحدد المصنف أو ورقة العمل التي تشير إليها.
لمعالجة قيم الخلايا هذه، عقارات و طرق يستخدم.
- الملكية: تقوم الخاصية بتخزين معلومات حول الكائن.
- الطريقة: الطريقة هي إجراء للكائن الذي سيتم تنفيذه. يمكن لكائن النطاق تنفيذ إجراءات مثل التحديد والنسخ والمسح والفرز وما إلى ذلك.
تتبع لغة VBA نمط التسلسل الهرمي للكائنات للإشارة إلى كائن في Excel. عليك اتباع البنية الموضحة أدناه. تذكر أن النقطة (.dot) هنا تربط الكائن في كل مستوى من المستويات المختلفة.
Application.Workbooks.Worksheets.Range
يمكن الوصول إلى هذا التسلسل الهرمي من خلال خاصيتين مختلفتين، وخاصية النطاق هي الأكثر استخدامًا.
كيفية الرجوع إلى كائن نطاق Excel VBA باستخدام خاصية النطاق
يمكن تطبيق خاصية النطاق على نوعين مختلفين من الكائنات.
- كائنات ورقة العمل
- كائنات النطاق
بناء جملة خاصية النطاق
- الكلمة المفتاحية “النطاق”.
- الأقواس التي تتبع الكلمة الأساسية
- نطاق الخلايا ذات الصلة
- اقتباس (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")
عندما تقوم بإحالة كائن النطاق، كما هو موضح أعلاه، تتم الإشارة إليه باسم مرجع مؤهل بالكامللقد حددت لبرنامج Excel بالضبط النطاق الذي تريده، والورقة التي تريدها، وفي أي ورقة عمل.
مثالرسالةBox Worksheets(“Sheet1”).Range(“A1”).Value
باستخدام خاصية Range، يمكنك تنفيذ العديد من المهام مثل،
- الرجوع إلى خلية واحدة باستخدام خاصية النطاق
- قم بالإشارة إلى خلية مفردة باستخدام خاصية Worksheet.Range
- الرجوع إلى صف أو عمود بأكمله
- قم بالرجوع إلى الخلايا المدمجة باستخدام خاصية Worksheet.Range وغيرها الكثير
على هذا النحو، سيكون الأمر طويلاً جدًا لتغطية جميع السيناريوهات الخاصة بخاصية النطاق. بالنسبة للسيناريوهات المذكورة أعلاه، سنعرض مثالاً واحدًا فقط. الرجوع إلى خلية واحدة باستخدام خاصية النطاق.
قم بالإشارة إلى خلية مفردة باستخدام خاصية Worksheet.Range
للإشارة إلى خلية واحدة، مرر عنوانها إلى خاصية النطاق كسلسلة نصية.
بناء الجملة بسيط "النطاق ("الخلية")".
هنا، سوف نستخدم الأمر ".Select" لتحديد الخلية المفردة من الورقة.
الخطوة 1) في هذه الخطوة، افتح برنامج إكسل.
الخطوة 2) في هذه الخطوة،
- انقر على
.
- سوف تفتح نافذة.
- أدخل اسم البرنامج الخاص بك هنا وانقر على زر "موافق".
- سوف يأخذك إلى ملف Excel الرئيسي، من القائمة العلوية، انقر على زر "إيقاف" التسجيل لإيقاف تسجيل الماكرو.
الخطوة 3) في الخطوة التالية،
- انقر على زر ماكرو
من القائمة العلوية. سيتم فتح النافذة أدناه.
- في هذه النافذة، انقر على زر "تحرير".
الخطوة 4) ستفتح الخطوة السابقة محرر أكواد VBA للملف المسمى "نطاق خلية واحدة". أدخل الكود الموضح أدناه لتحديد النطاق "A1" من ورقة Excel.
Sub SingleCellRange() Range("A1").Select End Sub
الخطوة 5) الآن احفظ الملف وتشغيل البرنامج كما هو موضح أدناه.
الخطوة 6) سترى أنه تم تحديد الخلية "A1" بعد تنفيذ البرنامج.
وبالمثل، يمكنك تحديد خلية باسم معين. على سبيل المثال، إذا كنت ترغب في البحث عن خلية باسم "Guru99- برنامج تعليمي لـ VBA. عليك تشغيل الأمر كما هو موضح أدناه. سيتم تحديد الخلية بهذا الاسم.
يتراوح("Guru99- برنامج تعليمي لـ VBA). حدد
لتطبيق كائن نطاق آخر، إليك نموذج التعليمات البرمجية.
| نطاق لاختيار الخلية في Excel | أعلن النطاق |
|---|---|
| لصف واحد | النطاق ("1:1") |
| لعمود واحد | النطاق ("أ:أ") |
| للخلايا المتجاورة | النطاق ("A1:C5") |
| للخلايا غير المتجاورة | النطاق ("A1:C5، F1:F5") |
| لتقاطع نطاقين | النطاق ("A1:C5 F1:F5") (بالنسبة لخلية التقاطع، تذكر أنه لا يوجد عامل فاصلة) |
| لدمج الخلية | النطاق ("A1:C5") (لدمج الخلية استخدم أمر "دمج") |
إن تحديد الخلية ليس سوى الخطوة الأولى. عملياً، يقوم الماكرو بقراءة محتوى الخلية وكتابة قيمة جديدة بدلاً منه.
كيفية قراءة وكتابة القيم باستخدام كائن النطاق
تقريبًا كل ماكرو يتعامل مع ورقة عمل يقوم بأحد أمرين: إما أنه يقرأ قيمة من خلية، أو أنه يكتب قيمة فيها. وكلاهما يمر عبر خاصية القيمة، ولا يحتاج أي منهما إلى تحديد الخلية أولاً.
Sub ReadAndWrite() Dim Price As Double Dim Qty As Long ' Read two values out of the sheet Price = Range("B1").Value Qty = Range("B2").Value ' Write the calculated result back Range("B3").Value = Price * Qty ' Fill a whole block in one statement Range("D1:D10").Value = "Guru99" ' Clear only the contents, keeping the formatting Range("F1:F10").ClearContents End Sub
أربع نقاط تجعل هذا النمط موثوقاً.
- الاختيار غير مطلوب: الكتابة Range(“B3”).Value = 10 يُعدّ تحديد الخلية أولاً أسرع وأكثر أماناً من تحديدها مباشرةً. تحتوي وحدات الماكرو المسجلة على العديد من أوامر .Select لأن المُسجِّل يُحاكي حركات الماوس، وليس لأن الكود يحتاجها.
- القيمة مقابل النص: تُعيد الدالة .Value البيانات الأساسية، بينما تُعيد الدالة .Text النص المنسق المعروض على الشاشة، والذي يمكن اقتطاعه حسب عرض العمود. اقرأ قيمة .Value في العمليات الحسابية.
- كتل كاملة في سطر واحد: يؤدي تعيين نطاق متعدد الخلايا إلى ملء كل خلية في وقت واحد، وهو أسرع بكثير من البحث عن عناصر أخرى.ping.
- امسح الشيء الصحيح: يزيل ClearContents القيم فقط، بينما يزيل Clear التنسيق أيضًا، أما Delete فيزيل الخلايا ويحرك الخلايا المحيطة بها.
يُحدد النطاق الخلية باستخدام حرفها ورقمها. أما الخاصية الثانية فتُحدد الخلية نفسها باستخدام رقمين بدلاً من ذلك.
خاصية الخلية
وبالمثل للنطاق، في VBA يمكنك أيضًا استخدام "خاصية الخلية". الفرق الوحيد هو أنها تحتوي على خاصية "العنصر" التي تُستخدم للإشارة إلى الخلايا في جدول البيانات. تُعد خاصية الخلية مفيدة في حلقات البرمجة.
على سبيل المثال،
Cells.item(Row, Column). يشير السطران أدناه إلى الخلية A1.
- Cells.item(1,1) أو
- Cells.item(1,"A")
الفرق بين النطاق والخلايا في VBA
تصل النطاقات والخلايا إلى نفس خلايا ورقة العمل عبر مسارات مختلفة، والاختيار الصحيح يجعل الكود أقصر وأسهل في القراءة.
| نقطة اختلاف | المدى | خلايا |
|---|---|---|
| تنسيق العنوان | سلسلة نصية، النطاق("A1") | رقمان، الخلايا (1، 1) |
| خلايا متعددة | نعم، النطاق ("A1:C5") | خلية واحدة في كل مرة |
| داخل حلقة | يحتاج إلى دمج السلاسل النصية | يمكن أن يكون رقم الصف هو عداد الحلقة |
| قراءة | يطابق العنوان الذي تراه في برنامج إكسل | يصعب تصور العمود 27 أكثر من العمود AA |
| الاستخدام المشترك | تقوم الدالة Range(Cells(1, 1), Cells(5, 3)) بإنشاء النطاق A1:C5 من الأرقام | |
القاعدة العملية هي استخدام النطاق لعنوان ثابت يمكنك قراءته بنظرة سريعة، والخلايا كلما تم حساب رقم الصف أو العمود في وقت التشغيل.
خاصية إزاحة المدى
ستحدد خاصية إزاحة النطاق الصفوف/الأعمدة بعيدًا عن موضعها الأصلي. على أساس النطاق المعلن، يتم تحديد الخلايا. انظر المثال أدناه.
على سبيل المثال،
Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select
ستكون النتيجة هي الخلية B2. ستنقل خاصية الإزاحة الخلية A1 عمودًا واحدًا وصفًا واحدًا. يمكنك تغيير قيمة RowOffset / ColumnOffset حسب الحاجة. يمكنك استخدام قيمة سالبة (-1) لتحريك الخلايا للخلف.
قم بتنزيل Excel الذي يحتوي على الكود أعلاه
قم بتنزيل ملف Excel أعلاه Code






