مصفوفات VBA في Excel: أنواعها وكيفية استخدامها مع مثال

⚡ ملخص ذكي

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

  • 📦 مفهوم المصفوفة: موقع ذاكرة واحد مُسمى يحتوي على العديد من القيم من نفس نوع البيانات، مفصولة بفهرس.
  • 🎯 المزايا: تعمل المصفوفات على تجميع البيانات ذات الصلة، وتقليل عدد المتغيرات، وتسريع عملية استرجاع البيانات وفرزها.
  • 📌 مصفوفة ثابتة: يتم الإعلان عنها بحجم ثابت، على سبيل المثال Dim ArrayMonth(12) As String، عندما يكون عدد العناصر معروفًا.
  • 🔄 المصفوفة الديناميكية: تم تعريفها فارغة باستخدام Dim ArrayMonth() وتم تحديد حجمها لاحقًا باستخدام ReDim عندما يكون عدد العناصر غير معروف.
  • 📐 الأبعاد: تستخدم المصفوفة فهرسًا واحدًا أو اثنين أو أكثر لنمذجة القوائم المفردة أو الجداول أو البيانات متعددة المستويات.
  • 🧪 مثال عملي: يقوم زر الأمر بتحميل أربعة أسماء مشروبات من مصفوفة إلى خلايا ورقة العمل باستخدام Sheet1.Cells.

مصفوفات إكسل VBA

ما هو صفيف VBA؟

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

باستخدام مصفوفة، يمكنك الرجوع إلى القيم المرتبطة بنفس الاسم. يمكنك استخدام فهرس أو منخفض للتمييز بينهما. تتم الإشارة إلى القيم الفردية كعناصر مصفوفة Excel VBA. وهي متجاورة من الفهرس 0 إلى أعلى قيمة للمؤشر.

يفترض هذا البرنامج التعليمي أنك تستخدم Microsoft Excel الإصدار 2013. ولا تزال المعرفة تنطبق على الإصدارات الأخرى من Microsoft التفوق كذلك.

ما هي مزايا المصفوفات؟

قبل كتابة كود المصفوفات، من المفيد فهم سبب أهمية استخدام المصفوفات. فيما يلي بعض المزايا التي توفرها دالة المصفوفة في VBA

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

أنواع المصفوفات في VBA

يدعم VBA نوعين من المصفوفات وهما؛

  • ساكن – تحتوي هذه الأنواع من المصفوفات على عدد محدد مسبقًا من العناصر التي يمكن تخزينها. لا يمكن للمرء تغيير حجم نوع بيانات المصفوفة الثابتة. تكون هذه مفيدة عندما تريد العمل مع كيانات معروفة مثل عدد الأيام في الأسبوع، والجنس، وما إلى ذلك.فمثلا: Dim ArrayMonth(12) كسلسلة
  • التفاعل – لا تحتوي هذه الأنواع من المصفوفات على عدد محدد مسبقًا من العناصر التي يمكن تخزينها. تكون هذه مفيدة عند العمل مع الكيانات التي لا يمكنك تحديد عددها مسبقًا.فمثلا: Dim ArrayMonth() كمتغير

بمجرد معرفة النوع الذي يناسب بياناتك، فإن الخطوة التالية هي صياغة تعريف كل نوع.

بناء الجملة للإعلان عن المصفوفات

صفائف ثابتة

بناء الجملة للإعلان STATIC المصفوفات هي كما يلي:

Dim arrayName (n) as datatype

هنا،

Code اكشن
خافت نوع البيانات اسم الصفيف (ن).
  1. يعلن عن متغير مصفوفة يسمى arrayName بحجم n ونوع بيانات. يشير الحجم إلى عدد العناصر التي يمكن للمصفوفة تخزينها.

صفائف ديناميكية

بناء الجملة للإعلان DYNAMIC المصفوفات هي كما يلي:

Dim arrayName() as datatype
ReDim arrayName(4)

هنا،

Code اكشن
نوع البيانات Dim arrayName ().
  1. يعلن عن متغير مصفوفة يسمى arrayName دون تحديد عدد العناصر
اسم الصفيف ReDim(4)
  1. يحدد حجم المصفوفة بعد تعريف المصفوفة.

أبعاد المصفوفة

يمكن أن تكون المصفوفة ذات بعد واحد أو بعدين أو متعددة الأبعاد.

  • بعد واحد: في هذا البعد، يستخدم المصفوفة فهرسًا واحدًا فقط. على سبيل المثال، عدد من الأشخاص من كل عمر.
  • بعدين: في هذا البعد، يستخدم المصفوفة فهرسين. على سبيل المثال، عدد الطلاب في كل فصل. ويتطلب عدد الفصول وعدد الطلاب في كل فصل
  • متعدد الأبعاد: في هذا البعد، يستخدم المصفوفة أكثر من فهرسين. على سبيل المثال، درجات الحرارة خلال النهار. (30، 40، 20).

كيفية استخدام المصفوفة في Excel VBA

بعد أن استعرضنا الجانب النظري، يمكننا الآن استخدام المصفوفات في مصنف حقيقي. سننشئ تطبيقًا بسيطًا يقوم بتعبئة ورقة عمل Excel ببيانات من متغير مصفوفة. في مثال VBA هذا للمصفوفات، سنقوم بما يلي.

  • إنشاء جديد Microsoft مصنف Excel واحفظه كمصنف Excel Macro-Enabled (*.xlsm)
  • إضافة زر أمر إلى المصنف
  • قم بتعيين خصائص الاسم والتسمية التوضيحية لزر الأمر
  • برمجة VBA الذي يملأ ورقة Excel

لنقم بهذا التمرين خطوة بخطوة

الخطوة 1 - إنشاء مصنف جديد

  1. ساعات العمل Microsoft Excel
  2. احفظ المصنف الجديد باسم VBA Arrays.xlsm

الخطوة 2 – إضافة زر الأمر

ملاحظة: يفترض هذا القسم أنك على دراية بعملية إنشاء واجهة في برنامج Excel. إذا لم تكن على دراية، اقرأ البرنامج التعليمي التحكم في نموذج VBA Excel والتحكم في ActiveX. سيوضح لك كيفية إنشاء الواجهة

  1. إضافة زر أمر إلى الورقة

استخدم المصفوفة في Excel VBA

  1. قم بتعيين خاصية الاسم إلى cmdLoadBeverages
  2. اضبط خاصية التسمية التوضيحية على تحميل المشروبات

يجب أن تكون واجهة المستخدم الرسومية الخاصة بك الآن كما يلي

استخدم المصفوفة في Excel VBA

الخطوة 3 - احفظ الملف

  1. انقر على زر حفظ باسم
  2. اختر مصنف Excel Macro-Enabled (*.xlsm) كما هو موضح في الصورة أدناه

استخدم المصفوفة في Excel VBA

الخطوة 4 – كتابة الرمز

سنقوم الآن بكتابة الكود الخاص بتطبيقنا

  1. انقر بزر الماوس الأيمن على زر تحميل المشروبات وحدد عرض الرمز
  2. أضف الكود التالي إلى حدث النقر لـ cmdLoadBeverages
Private Sub cmdLoadBeverages_Click()
    Dim Drinks(1 To 4) As String

    Drinks(1) = "Pepsi"
    Drinks(2) = "Coke"
    Drinks(3) = "Fanta"
    Drinks(4) = "Juice"

    Sheet1.Cells(1, 1).Value = "My Favorite Beverages"
    Sheet1.Cells(2, 1).Value = Drinks(1)
    Sheet1.Cells(3, 1).Value = Drinks(2)
    Sheet1.Cells(4, 1).Value = Drinks(3)
    Sheet1.Cells(5, 1).Value = Drinks(4)
End Sub

هنا،

Code اكشن
المشروبات الخافتة (1 إلى 4) كسلسلة
  • يعلن عن متغير مصفوفة يسمى Drinks. مؤشر المصفوفة الأول هو 1 ومؤشر المصفوفة الأخير هو 4.
المشروبات(1) = "بيبسي"
  • يعين قيمة Pepsi لعنصر المصفوفة الأول. الكود الآخر المشابه يفعل نفس الشيء بالنسبة للعناصر الأخرى في المصفوفة.
Sheet1.Cells(1, 1).Value = “My Favorite Beverages”
  • يكتب قيمة مشروباتي المفضلة في عنوان الخلية A1. تشير الورقة 1 إلى الورقة، وتشير الخلايا (1,1،1) إلى الصف رقم 1 والعمود XNUMX (ب)
الورقة 1. الخلايا (2، 1). القيمة = المشروبات (1)
  • يكتب قيمة عنصر المصفوفة ذات الفهرس 1 إلى الصف الثاني من العمود 1

اختبار تطبيقنا

بعد إدخال الكود، الخطوة الأخيرة هي تشغيل الزر والتأكد من أن المصفوفة تملأ الصفحة. حدد علامة تبويب المطور وتأكد من أن زر وضع التصميم مُعطّل. يُشير إلى ذلك ظهور خلفية بيضاء وليست ملونة (خضراء). (انظر الصورة أدناه)

اختبار تطبيق في Excel VBA

انقر على زر تحميل المشروبات

سوف تحصل على النتائج التالية

اختبار تطبيق في Excel VBA

قم بتنزيل Excel الذي يحتوي على الكود أعلاه

قم بتنزيل ملف Excel أعلاه Code

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

المصفوفة الثابتة لها حجم ثابت يُحدد عند تعريفها، مثل Dim Arr(12). أما المصفوفة الديناميكية فتُعرَّف فارغة باستخدام Dim Arr()، ويُعاد تحديد حجمها لاحقًا باستخدام ReDim عندما يكون عدد العناصر غير معروف مسبقًا.

تُستخدم الدالة ReDim لتعيين أو تغيير حجم مصفوفة ديناميكية بعد تعريفها. إضافة الكلمة المفتاحية Preserve، كما في ReDim Preserve Arr(10)، تُبقي على القيم الموجودة أثناء تغيير الحجم؛ أما بدون Preserve، فتُمسح جميع القيم المخزنة.

استخدم الدالتين LBound و UBound. تُعيد LBound أدنى فهرس، بينما تُعيد UBound أعلى فهرس. عدد العناصر يساوي UBound(Arr) ناقص LBound(Arr) زائد واحد، وهذا ينطبق على المصفوفات الثابتة والديناميكية على حد سواء.

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

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

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