كائن نطاق VBA Excel

⚡ ملخص ذكي

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

  • 🎯 فريف: يشير كائن النطاق إلى خلية واحدة، أو صف، أو عمود، أو تحديد، أو نطاق ثلاثي الأبعاد.
  • 🧬 التسلسل الهرمي: تتضمن المراجع المؤهلة بالكامل: التطبيق، ودفاتر العمل، وأوراق العمل، ثم النطاق.
  • 🏷️ الخصائص والأساليب: تقوم الخاصية بتخزين معلومات حول الكائن، وتقوم الطريقة بتنفيذ إجراء مثل التحديد أو الدمج.
  • 🔢 خاصية الخلية: تُستخدم الدالة Cells(Row, Column) لمعالجة الخلية بواسطة رقمها، وهو ما يناسب حلقة البرمجة.
  • ✍️ قراءة وكتابة: تقوم خاصية القيمة باسترجاع محتويات الخلية وكتابة محتويات جديدة مرة أخرى.
  • ↔️ خاصية الإزاحة: تقوم خاصية الإزاحة بنقل مرجع ما بمقدار عدد محدد من الصفوف والأعمدة من خليته الأصلية.

كائن نطاق VBA Excel

ما هو نطاق VBA؟

يمثل كائن نطاق VBA خلية أو خلايا متعددة في ورقة عمل Excel. إنه أهم كائن في Excel VBA. باستخدام كائن نطاق Excel VBA، يمكنك الرجوع إلى،

  • خلية واحدة
  • صف أو عمود من الخلايا
  • مجموعة مختارة من الخلايا
  • مجموعة ثلاثية الأبعاد

كما ناقشنا في الدرس السابق، تُستخدم لغة VBA لتسجيل وتشغيل الماكرولكن كيف يحدد VBA البيانات التي تحتاج إلى معالجة في ورقة العمل؟ هنا تكمن فائدة كائنات النطاق في VBA.

مقدمة إلى الكائنات المرجعية في VBA

الرجوع إلى كائن نطاق VBA الخاص بـ Excel ومؤهل الكائنات.

  • تصفيات الكائن: يستخدم هذا للإشارة إلى الكائن. فهو يحدد المصنف أو ورقة العمل التي تشير إليها.

لمعالجة قيم الخلايا هذه، عقارات و طرق يستخدم.

  • الملكية: تقوم الخاصية بتخزين معلومات حول الكائن.
  • الطريقة: الطريقة هي إجراء للكائن الذي سيتم تنفيذه. يمكن لكائن النطاق تنفيذ إجراءات مثل التحديد والنسخ والمسح والفرز وما إلى ذلك.

تتبع لغة VBA نمط التسلسل الهرمي للكائنات للإشارة إلى كائن في Excel. عليك اتباع البنية الموضحة أدناه. تذكر أن النقطة (.dot) هنا تربط الكائن في كل مستوى من المستويات المختلفة.

Application.Workbooks.Worksheets.Range

يمكن الوصول إلى هذا التسلسل الهرمي من خلال خاصيتين مختلفتين، وخاصية النطاق هي الأكثر استخدامًا.

كيفية الرجوع إلى كائن نطاق Excel VBA باستخدام خاصية النطاق

يمكن تطبيق خاصية النطاق على نوعين مختلفين من الكائنات.

  • كائنات ورقة العمل
  • كائنات النطاق

بناء جملة خاصية النطاق

  1. الكلمة المفتاحية “النطاق”.
  2. الأقواس التي تتبع الكلمة الأساسية
  3. نطاق الخلايا ذات الصلة
  4. اقتباس (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

عندما تقوم بإحالة كائن النطاق، كما هو موضح أعلاه، تتم الإشارة إليه باسم مرجع مؤهل بالكامللقد حددت لبرنامج Excel بالضبط النطاق الذي تريده، والورقة التي تريدها، وفي أي ورقة عمل.

مثالرسالةBox Worksheets(“Sheet1”).Range(“A1”).Value

باستخدام خاصية Range، يمكنك تنفيذ العديد من المهام مثل،

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

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

قم بالإشارة إلى خلية مفردة باستخدام خاصية Worksheet.Range

للإشارة إلى خلية واحدة، مرر عنوانها إلى خاصية النطاق كسلسلة نصية.

بناء الجملة بسيط "النطاق ("الخلية")".

هنا، سوف نستخدم الأمر ".Select" لتحديد الخلية المفردة من الورقة.

الخطوة 1) في هذه الخطوة، افتح برنامج إكسل.

خلية واحدة باستخدام خاصية Worksheet.Range

الخطوة 2) في هذه الخطوة،

  • انقر على خلية واحدة باستخدام خاصية Worksheet.Range .
  • سوف تفتح نافذة.
  • أدخل اسم البرنامج الخاص بك هنا وانقر على زر "موافق".
  • سوف يأخذك إلى ملف Excel الرئيسي، من القائمة العلوية، انقر على زر "إيقاف" التسجيل لإيقاف تسجيل الماكرو.

خلية واحدة باستخدام خاصية Worksheet.Range

الخطوة 3) في الخطوة التالية،

  • انقر على زر ماكرو خلية واحدة باستخدام خاصية Worksheet.Range من القائمة العلوية. سيتم فتح النافذة أدناه.
  • في هذه النافذة، انقر على زر "تحرير".

خلية واحدة باستخدام خاصية Worksheet.Range

الخطوة 4) ستفتح الخطوة السابقة محرر أكواد VBA للملف المسمى "نطاق خلية واحدة". أدخل الكود الموضح أدناه لتحديد النطاق "A1" من ورقة Excel.

Sub SingleCellRange()
    Range("A1").Select
End Sub

خلية واحدة باستخدام خاصية Worksheet.Range

الخطوة 5) الآن احفظ الملف خلية واحدة باستخدام خاصية Worksheet.Range وتشغيل البرنامج كما هو موضح أدناه.

خلية واحدة باستخدام خاصية Worksheet.Range

الخطوة 6) سترى أنه تم تحديد الخلية "A1" بعد تنفيذ البرنامج.

خلية واحدة باستخدام خاصية Worksheet.Range

وبالمثل، يمكنك تحديد خلية باسم معين. على سبيل المثال، إذا كنت ترغب في البحث عن خلية باسم "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

الأسئلة الشائعة

استخدم الدالة Cells(Rows.Count, 1).End(xlUp).Row. تبدأ هذه الدالة من أسفل العمود A وتنتقل إلى آخر خلية تحتوي على بيانات، وهي أكثر موثوقية من الدالة UsedRange بعد حذف الصفوف.

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

عادةً ما يكون السبب عنوانًا غير صالح، أو اسم ورقة غير موجود، أو محاولة تحديد نطاق في ورقة عمل غير نشطة. حدد المرجع باستخدام اسم الورقة، أو فعّل الورقة أولًا.

نعم. الصق الكود المسجل، وسيقوم مساعد الذكاء الاصطناعي باستبدال كل زوج من Select و Selection بمرجع نطاق مباشر ومؤهل بالكامل. شغّل كلا الإصدارين على نسخة وقارن الورقة قبل الحفظ.ping التغيير.

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

تلخيص هذه التدوينة بـ: