VBA ListObjects | دليل لجداول ListObject Excel في Excel VBA

ما هي ListObjects في VBA؟

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

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

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

إنشاء تنسيق جدول باستخدام ListObjects في Excel VBA

على سبيل المثال ، انظر إلى بيانات Excel أدناه.

باستخدام كود VBA ListObject ، سننشئ تنسيق جدول لهذه البيانات.

يمكنك تنزيل قالب Excel الخاص بـ VBA ListObjects هنا - قالب Excel لـ VBA ListObjects
  • بالنسبة لهذه البيانات ، نحتاج أولاً إلى العثور على آخر صف وعمود تم استخدامه ، لذلك حدد متغيرين للعثور على هذا.

رمز:

 Sub List_Objects_Example1 () خافت LR مثل LC طويل خافت مثل Long End Sub 

  • للعثور على آخر صف وعمود مستخدمين ، استخدم الكود أدناه.

رمز:

LR = الخلايا (عدد الصفوف ، 1) ، النهاية (xlUp) ، الصف LC = الخلايا (1 ، عدد الأعمدة) ، النهاية (xlToLeft) ، العمود

  • حدد الآن متغيرًا آخر للاحتفاظ بمرجع البيانات.

رمز:

 خافت Rng كمدى 

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

رمز:

 تعيين Rng = خلايا (1 ، 1). الحجم (LR ، LC)

نحتاج الآن إلى استخدام طريقة VBA “ListObject.Add” لإنشاء جدول ، وفيما يلي بناء الجملة نفسه.

ListObject.Add (المصدر ، XlListObjectHasHeaders ، الوجهة ، TableStyleName)

المصدر: هذا ليس شيئًا لأي نطاق من الخلايا نقوم بإدراج الجدول. لذلك يمكننا تقديم وسيطين هنا ، مثل "xlSrcRange" و "xlSrcExternal".

XlListObjectHasHeaders: إذا كان الجدول الذي يقوم بإدراج البيانات يحتوي على رؤوس أم لا. إذا كانت الإجابة بنعم ، فيمكننا توفير "xlYes" إذا لم يكن الأمر كذلك ، فيمكننا توفير "xlNo".

الوجهة: هذا ليس سوى نطاق بياناتنا.

نمط الجدول: إذا كنت ترغب في تطبيق أي نمط جدول يمكننا توفير الأنماط.

  • حسنًا ، الآن في الورقة النشطة ، نقوم بإنشاء الجدول ، لذا فإن الكود أدناه سينشئ جدولًا لنا.

رمز:

 خافت Ws مثل مجموعة ورقة العمل Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange، xllistobjecthasheaders: = xlYes، Destination: = Rng

  • بعد ذلك ، نحتاج إلى تسمية هذا الجدول.

رمز:

Ws.ListObjects (1) .name = "EmpTable"

  • أدناه هو الرمز الكامل للرجوع اليها.

رمز:

 Sub List_Objects_Example1 () Dim LR مثل Long Dim LC طويل LR = خلايا (Rows.Count، 1) .End (xlUp) .Row LC = خلايا (1، Columns.Count). End (xlToLeft). تعيين Rng = خلايا (1 ، 1). الحجم (LR ، LC) خافت Ws مثل مجموعة ورقة العمل Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange ، xllistobjecthasheaders: = xlYes ، الوجهة: = Rng Ws.ListObjects (1) .name = " EmpTable "End Sub 

حسنًا ، لنقم بتشغيل الكود ونرى السحر.

لقد أنشأت الجدول للبيانات المذكورة وأعطيت اسم الجدول كـ "EmpTable" .

تنسيق جداول Excel باستخدام VBA ListObjects

بمجرد إنشاء جدول Excel ، يمكننا العمل مع الجداول باستخدام مجموعة vba ListObject.

  • أولاً ، حدد المتغير كـ “ListObject”.

رمز:

 Sub List_Objects_Example2 () خافت MyTable كـ ListObject End Sub 

  • الآن قم بتعيين المرجع لهذا المتغير باستخدام اسم الجدول.

رمز:

 List_Objects_Example2 () خافت MyTable على هيئة ListObject تعيين MyTable = ActiveSheet.ListObjects ("EmpTable") End Sub 

الآن المتغير "MyTable" يحمل المرجع للجدول "EmpTable".

  • أدخل اسم المتغير وضع نقطة لرؤية خصائص وأساليب VBA ListObject.

على سبيل المثال ، إذا أردنا تحديد الجدول بأكمله ، فنحن بحاجة إلى استخدام كائن "Range" وتحت هذا ، نحتاج إلى استخدام طريقة "Select".

رمز:

MyTable.Range.Select

سيؤدي هذا إلى تحديد جدول البيانات بالكامل بما في ذلك العنوان.

  • إذا كنت تريد تحديد محتويات الجدول فقط بدون رؤوس ، فنحن بحاجة إلى استخدام "DataBodyRange".

رمز:

MyTable.DataBodyRange.Select

مثل هذا ، يمكننا اللعب بالطاولات.

  • فيما يلي قائمة برموز النشاط للرجوع إليها.

رمز:

 Sub List_Objects_Example2 () Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") MyTable.DataBodyRange.Select 'لتحديد نطاق البيانات بدون رؤوس MyTable.Range.Select' لتحديد نطاق البيانات مع الرؤوس MyTable.HeaderRowRange.Select 'To حدد صفوف رؤوس الجدول MyTable.ListColumns (2) .Range.Select 'لتحديد العمود 2 بما في ذلك الرأس MyTable.ListColumns (2) .DataBodyRange.Select' لتحديد العمود 2 بدون الرأس End Sub 

مثل هذا ، يمكننا استخدام مجموعة "ListObject" للتلاعب بجداول Excel.

أشياء للذكرى

  • VBA ListObject هي مجموعة من الكائنات للإشارة إلى جداول Excel.
  • للوصول إلى مجموعة ListObject أولاً ، نحتاج إلى تحديد ورقة العمل التي نشير إليها.

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