مصفوفة سلسلة VBA | كيف تعلن وتهيئ صفيف السلسلة في Excel VBA؟

مصفوفة سلسلة Excel VBA

في VBA ، لا تعد مصفوفة String سوى متغير صفيف يمكن أن يحتوي على أكثر من قيمة سلسلة واحدة مع متغير واحد.

للحصول على مثال ، انظر إلى رمز VBA أدناه.

رمز:

 Sub String_Array_Example () Dim CityList (1 إلى 5) كـ Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "،" & CityList (2) & "،" & CityList (3) & "،" & CityList (4) & "،" & CityList (5) End Sub 

في الكود أعلاه ، لقد أعلنت كمتغير مصفوفة وقمت بتعيين طول المصفوفة من 1 إلى 5.

 Dim CityList (من 1 إلى 5) كمتغير 

بالنسبة لمتغير المصفوفة هذا ، قمت بتعيين 5 أسماء مدن مع ذكر عدد كل مصفوفة في الأقواس.

CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"

بعد ذلك ، كتبت رمزًا لإظهار أسماء المدن هذه في مربع الرسالة.

MsgBox CityList (1) & "،" & CityList (2) & "،" & CityList (3) & "،" & CityList (4) & "،" & CityList (5)

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

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

أمثلة على مصفوفة السلسلة في Excel VBA

فيما يلي أمثلة على مصفوفة سلسلة Excel vba.

يمكنك تنزيل قالب VBA String Array Excel من هنا - قالب VBA String Array Excel

مثال 1

كما رأينا في الكود أعلاه ، علمنا أنه يمكننا تخزين أكثر من قيمة في المتغير بناءً على حجم المصفوفة المحدد.

الآن ما يتعين علينا القيام به هو عدم تحديد طول المصفوفة مسبقًا.

رمز:

 Sub String_Array_Example1 () Dim CityList () كـ Variant End Sub 

كما ترون أعلاه داخل الأقواس ، لم أكتب أي أطوال. الآن بالنسبة لهذا المتغير ، دعنا ندرج القيم باستخدام وظيفة VBA ARRAY.

داخل المصفوفة ، قم بتمرير القيم بين علامتي اقتباس مزدوجتين مفصولة بفاصلة (،).

رمز:

 Sub String_Array_Example () Dim CityList () As Variant CityList = Array ("Bangalore"، "Mumbai"، "Kolkata"، "Hyderabad"، "Orissa") End Sub 

احتفظ الآن بالرمز القديم لإظهار نتيجة أسماء المدن في مربع الرسائل في VBA.

رمز:

 Sub String_Array_Example1 () Dim CityList () As Variant CityList = Array ("Bangalore"، "Mumbai"، "Kolkata"، "Hyderabad"، "Orissa") MsgBox CityList (0) & "،" & CityList (1) & " ، "& CityList (2) &"، "& CityList (3) &"، "& CityList (4) End Sub 

أحد التغييرات التي أجريتها في الكود أعلاه هو أننا لم نقرر الحد الأدنى والحد الأعلى لمتغير المصفوفة وقد استخدمنا عدد صفيف دالة ARRAY سيبدأ من 0 وليس من 1.

لذلك ، هذا هو السبب في أننا ذكرنا القيم مثل CityList (0) و ClityList (1) و CityList (2) و CityList (3) و CityList (4).

الآن قم بتشغيل الكود من خلال مفتاح اختصار Excel F5 أو يدويًا ، نحصل على نفس النتيجة التي نحصل عليها من الكود السابق.

المثال رقم 2

مصفوفة سلسلة VBA مع وظائف LBOUND و UBOUND

في حالة عدم رغبتك في إظهار كل قائمة المدن في مربع رسالة واحد ، فأنت بحاجة إلى تضمين الحلقات ، وتحديد متغير آخر للحلقات.

الآن لتضمين حلقة FOR NEXT ، لسنا متأكدين من عدد المرات التي نحتاجها لتشغيل الكود ، في هذه الحالة ، يمكننا أن نقررها مثل 5 مرات ولكن هذه ليست الطريقة الصحيحة للتعامل مع المشكلة. إذن ماذا عن فكرة معرف طول المصفوفة ذات المستوى الأعلى والأدنى ؟؟؟

عندما نفتح حلقة FOR NEXT ، عادة ما نقرر طول الحلقة من 1 إلى 5 أو من 1 إلى 10 حسب الموقف. بدلاً من إدخال الأرقام يدويًا ، دعنا نستخدم دالة LBOUND و UBOUND لتحديد القيمة الأدنى والقيمة العليا تلقائيًا.

بالنسبة إلى LBound و Ubound ، قمت بتوفير اسم مجموعة مثل CityList. يحدد VBA LBound القيمة الدنيا لمتغير الصفيف وتحدد دالة VBA UBound القيمة العليا لمتغير الصفيف.

اعرض الآن القيمة في مربع الرسالة ، بدلاً من إدخال الرقم التسلسلي ، دع متغير الحلقة "k" يأخذ قيمة الصفيف تلقائيًا.

رمز:

 Sub String_Array_Example1 () Dim CityList () كمتغير Dim k كـ Integer CityList = Array ("Bangalore" ، "Mumbai" ، "Kolkata" ، "Hyderabad" ، "Orissa") لـ k = LBound (CityList) إلى UBound (CityList) MsgBox CityList (k) التالي k End Sub 

الآن سيظهر مربع الرسالة اسم كل مدينة على حدة.

المثال رقم 3

صفيف سلسلة VBA مع وظيفة الانقسام

افترض الآن أن لديك أسماء مدن مثل أدناه.

بنغالور مومباي كولكاتا هيدراباد أوريسا

في هذه الحالة ، يتم دمج جميع المدن مع القولون الذي يفصل بين كل مدينة. في مثل هذه الحالات ، نحتاج إلى استخدام وظيفة SPLIT لفصل كل مدينة.

بالنسبة إلى Expression ، قم بتزويد قائمة المدينة.

رمز:

 Sub String_Array_Example2 () Dim CityList () مثل String Dim k As Integer CityList = Split ("Bangalore؛ Mumbai؛ Kolkata؛ Hydrabad؛ Orissa"، For k = LBound (CityList) to UBound (CityList) MsgBox CityList (k) Next k End الفرعية 

الحجة التالية هي "محدد" أي ما هو الحرف الوحيد الذي يفصل كل مدينة عن المدن الأخرى ، في هذه الحالة ، "كولون".

رمز:

 Sub String_Array_Example2 () Dim CityList () مثل String Dim k As Integer CityList = Split ("Bangalore؛ Mumbai؛ Kolkata؛ Hydrabad؛ Orissa"، "؛") لـ k = LBound (CityList) إلى UBound (CityList) MsgBox CityList (k ) التالي k End Sub 

تحدد قيم تقسيم الدالة SPLIT الآن أيضًا أعلى طول للصفيف.

أشياء للذكرى

  • LBOUND و UBOUND دالات لتحديد أطوال الصفيف.
  • يمكن أن تحتوي الدالة ARRAY على العديد من القيم لمتغير مُعلن.
  • مرة واحدة إذا كنت تريد استخدام وظيفة ARRAY لا تحدد طول الصفيف.