اتحاد VBA | انضم إلى نطاقات متعددة باستخدام Excel VBA Union

اتحاد Excel VBA

يشبه Union in VBA الاتحاد في لغات البرمجة الأخرى ، في VBA نستخدم الاتحاد لدمج نطاقين أو أكثر من نطاقين لأداء مجموعات مختلفة من العمليات عليها ، والبيان المستخدم لهذا هو في حد ذاته اتحاد ويسمى طريقة الاتحاد ، على سبيل المثال ، union (Range (B2: C7)، Range (D2: E7)). حدد وستقوم هذه الطريقة بتحديد الخلايا.

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

بناء الجملة

ألقِ نظرة الآن على صيغة طريقة الاتحاد.

نحتاج إلى توفير نطاقين على الأقل.

  • Arg 1: هذا هو النطاق الأول للخلايا التي نحتاجها لإنشاء اتحاد.
  • Arg 2: هذا هو النطاق الثاني للخلايا التي نحتاجها لإنشاء اتحاد.

المعلمتان الأوليان إلزاميتان ، بعد ذكر نطاقين من الخلايا ، تصبح جميع الوسائط الأخرى اختيارية.

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

لتحديد عدة نطاقات من الخلايا ، يمكننا عادة استخدام كائن RANGE. على سبيل المثال ، إذا أردنا تحديد نطاق الخلايا من A1 إلى B5 ومن B3 إلى D5 ، فيمكننا كتابة رمز VBA كما هو موضح أدناه.

رمز:

 الاتحاد الفرعي Union_Example1 () (النطاق ("A1: B5") ، النطاق ("B3: D5"). حدد End Sub 

سيؤدي هذا إلى تحديد نطاق الخلايا مثل الصورة أدناه.

كما نرى في الصورة أعلاه ، يتم تحديد النطاق الأول من A1 إلى B5 ويتم تحديد النطاق الثاني من B3 إلى D5.

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

كيفية استخدام طريقة اتحاد VBA للانضمام إلى نطاق متعدد؟

يمكنك تنزيل قالب VBA Union Excel هذا هنا - قالب VBA Union Excel

مثال 1

لنفعل نفس ما فعلناه في المثال أعلاه ولكن هذه المرة باستخدام طريقة UNION.

الخطوة 1 - افتح وظيفة UNION في الإجراء الفرعي.

رمز:

 الاتحاد الفرعي Union_Example1 () الاتحاد (End Sub 

الخطوة 2 - أذكر النطاق الأول من الخلايا باستخدام كائن RANGE. في هذه الحالة ، أذكر النطاق الأول من الخلايا مثل A1 إلى B5 .

رمز:

 الاتحاد الفرعي Union_Example1 () الاتحاد (النطاق ("A1: A5") ، End Sub 

الخطوة 3 - الآن أذكر النطاق الثاني من الخلايا باستخدام كائن RANGE ، في هذه الحالة ، أذكر نطاق الخلايا مثل B3 إلى D5 .

رمز:

 Union_Example1 فرعي () اتحاد (نطاق ("A1: A5") ، نطاق ("B3: B5")) نهاية فرعية 

الخطوة 4 - بعد إنشاء اتحاد هذه المجموعة من الخلايا ، نحتاج إلى تحديد ما نحتاج إلى القيام به مع نطاق اتحاد الخلايا هذا. ضع النقطة (.) لرؤية قائمة التحسس الذكي.

رمز:

الاتحاد الفرعي Union_Example1 () الاتحاد (النطاق ("A1: A5") ، النطاق ("B3: B5")). End Sub

الخطوة 5 - يمكننا رؤية جميع الخصائص والأساليب المتاحة لهذه النطاقات.

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

رمز:

 الاتحاد الفرعي Union_Example1 () الاتحاد (النطاق ("A1: A5") ، النطاق ("B3: B5")). النهاية الداخلية الفرعية 

الخطوة 6 - باستخدام الخاصية الداخلية ، يمكننا القيام بالعديد من الأشياء ، ولكن نظرًا لأننا نحتاج إلى تغيير لون خلايا الاتحاد ، فسوف أحدد خاصية اللون.

رمز:

 الاتحاد الفرعي Union_Example1 () (النطاق ("A1: A5") ، النطاق ("B3: B5")). Interior.Color End Sub 

الخطوة 7 - الآن نحن بحاجة إلى تعيين خاصية اللون. سأستخدم خاصية فهرس الألوان المضمنة مثل vbGreen.

رمز:

 Sub Union_Example1 () Union (Range ("A1: A5")، Range ("B3: B5")). Interior.Color = vbGreen End Sub 

الخطوة 8 - الآن إذا قمت بتشغيل ألوان التعليمات البرمجية للخلايا الموحدة سيتم تغييرها إلى اللون الأخضر.

مثل هذا باستخدام طريقة Union ، يمكننا إنشاء انسجام بين نطاقين أو أكثر من الخلايا.

مثال # 2 - استخدم المتغيرات لتخزين مجموعة من الخلايا

معظم المبرمجين يستخدمون المتغيرات لتخزين مرجع نطاق الخلايا. للحصول على مثال ، انظر إلى الكود أدناه.

رمز:

 Sub Union_Example2 () Dim Rng1 كنطاق خافت Rng2 كمجموعة نطاق Rng1 = النطاق ("A1: B5") تعيين Rng2 = النطاق ("B3: D5") الاتحاد (Rng1 ، Rng2). داخلي.اللون = vbGreen End Sub 

أولاً ، أعلنت عن متغيرين هما Range.

Dim Rng1 كمدى

Dim Rng2 كمدى

ثم قمت بتعيين المرجع لهذين المتغيرين.

تعيين Rng1 = النطاق ("A1: B5")

تعيين Rng2 = النطاق ("B3: D5")

الآن المتغير rng1 يحمل مرجع النطاق ("A1: B5") والمتغير الثاني rng2 يحمل مرجع النطاق ("B3: D5").

ثم قمت بتطبيق وظيفة UNION لتغيير اللون الداخلي لهذه المجموعة من الخلايا.

يعمل هذا أيضًا تمامًا مثل السابق ولكن استخدام المتغير يجعل الكود مرنًا جدًا للاستخدام.

خطأ في وظيفة الاتحاد

كما قلت ، يجب أن تكون جميع المراجع إلزامية لطريقة الاتحاد. للحصول على مثال ، انظر إلى الكود أدناه.

رمز:

 Sub Union_Example3 () Dim Rng1 كنطاق خافت Rng2 كنطاق خافت Rng3 كمجموعة نطاق Rng1 = نطاق ("A1: B5") تعيين Rng2 = نطاق ("B3: D5") الاتحاد (Rng1 ، Rng2 ، Rng3). داخلي. = vbGreen End Sub 

هذا مشابه لما سبق ، لكنني هنا أعلنت عن متغير آخر باسم Range.

خافت Rng3 كمجموعة

لكنني لم أقم بتعيين المرجع لهذا المتغير ، بل قمت فقط بتوفير المتغير لوظيفة UNION.

الاتحاد (Rng1 ، Rng2 ، Rng3). داخلي ، اللون = vbGreen

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

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


$config[zx-auto] not found$config[zx-overlay] not found