VBA ListObjects | מדריך לטבלאות ListObject ב- Excel VBA

מה הם ListObjects ב- VBA?

בטבלה בדרך כלל מה שאנו רואים הוא מערך נתונים, אך במינוח VBA יש הרבה יותר כמו שיש טווח של טווח רשימת הנתונים הכולל, העמודה מכונה עמודת הרשימה והשורה ידועה כשורת הרשימה וכן הלאה. , אז על מנת לגשת למאפיינים אלה יש לנו פונקציה מובנית המכונה Listobjects והיא משמשת עם פונקציית גליון העבודה.

VBA ListObject היא דרך להתייחס לטבלאות האקסל בזמן כתיבת קוד ה- VBA. על ידי שימוש ב- VBA LISTOBJECTS אנו יכולים ליצור, למחוק טבלה, ולגמרי נוכל לשחק עם טבלאות אקסל בקוד VBA. טבלאות אקסל הן מסובכות, מתחילות ואפילו במידה שמשתמשים ברמה בינונית מתקשים לעבוד עם טבלאות. מכיוון שמאמר זה מדבר על הפניה לטבלאות אקסל בקידוד VBA עדיף שיהיה לך ידע טוב אודות טבלאות באקסל.

כאשר הנתונים מומרים לטבלאות אנו כבר לא עובדים עם מגוון תאים אלא עלינו לעבוד עם טווחי טבלאות, לכן במאמר זה נראה לכם כיצד לעבוד עם טבלאות אקסל בכדי לכתוב קודי VBA ביעילות.

צור פורמט טבלה באמצעות ListObjects ב- Excel VBA

לדוגמה, עיין בנתוני ה- Excel הבאים.

באמצעות קוד VBA ListObject ניצור פורמט טבלה לנתונים אלה.

ניתן להוריד תבנית VBA ListObjects Excel כאן - תבנית VBA ListObjects Excel
  • עבור נתונים אלה ראשית עלינו למצוא מהי השורה והעמודה האחרונה בשימוש, לכן הגדר שני משתנים כדי למצוא זאת.

קוד:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC כמו Long End Sub 

  • כדי למצוא את השורה והעמודה האחרונה שהשתמשו בה השתמש בקוד שלמטה.

קוד:

LR = תאים (שורות. ספירה, 1). סוף (xlUp). שורה LC = תאים (1, עמודות.ספירה). סוף (xlToLeft).

  • כעת הגדירו משתנה אחד נוסף שיחזיק את הפניה של הנתונים.

קוד:

 עמום Rng כטווח 

  • כעת הגדר את ההפניה למשתנה זה באמצעות הקוד שלהלן.

קוד:

 הגדר Rng = תאים (1, 1). גודל גודל (LR, LC)

כעת עלינו להשתמש בשיטת VBA "ListObject.Add" כדי ליצור טבלה ולמטה תחביר זהה.

ListObject.Add (Source, XlListObjectHasHeaders, Destination, TableStyleName)

מקור: זה לא דבר עבור איזה טווח תאים אנו מכניסים את הטבלה. אז נוכל לספק כאן שני טיעונים כלומר "xlSrcRange" ו- "xlSrcExternal".

XlListObjectHasHeaders: אם בטבלה המכניסה נתונים יש כותרות או לא. אם כן אנו יכולים לספק "xlYes" אם לא אנו יכולים לספק "xlNo".

יעד: זה רק טווח הנתונים שלנו.

סגנון שולחן: אם ברצונך ליישם סגנון שולחן כלשהו אנו יכולים לספק סגנונות.

  • אוקי, עכשיו בגיליון הפעיל אנו יוצרים את הטבלה, כך שלמטה הקוד ייצור טבלה עבורנו.

קוד:

 העמעם Ws כגיליון עבודה סט Ws = ActiveSheet Ws.ListObjects. הוסף xlSrcRange, xllistobjecthasheaders: = xl כן, יעד: = Rng

  • לאחר מכן, עלינו לתת שם לטבלה זו.

קוד:

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

  • להלן הקוד המלא לעיונך.

קוד:

 Sub List_Objects_Example1 () Dim LR As Long Dim LC As Long LR = Cells (Rows.Count, 1). End (xlUp). Row LC = Cells (1, Columns.Count). End (xlToLeft). עמודה עמודה Rng כטווח הגדר Rng = תאים (1, 1). גודל גודל (LR, LC) העמעם Ws כגיליון עבודה הגדר Ws = ActiveSheet Ws.ListObjects. הוסף xlSrcRange, xllistobjecthasheaders: = xl כן, יעד: = Rng Ws.ListObjects (1) .name = " EmpTable "סוף משנה 

אוקי, בואו נפעיל את הקוד ונראה את הקסם.

היא יצרה את הטבלה לנתונים שהוזכרו וקיבלה את שם הטבלה כ- "EmpTable" .

עיצוב טבלאות אקסל עם VBA ListObjects

לאחר יצירת טבלת האקסל נוכל לעבוד עם טבלאות באמצעות אוסף vba ListObject.

  • ראשית, הגדירו את המשתנה כ- "ListObject".

קוד:

 Sub List_Objects_Example2 () עמום MyTable כמו ListObject End Sub 

  • כעת הגדר את ההפניה למשתנה זה באמצעות שם הטבלה.

קוד:

 Sub List_Objects_Example2 () עמעום את MyTable כ- ListObject Set MyTable = ActiveSheet.ListObjects ("EmpTable") Sub Sub 

כעת המשתנה "MyTable" מחזיק בהפניה לטבלה "EmpTable".

  • הזן את שם המשתנה ושם נקודה כדי לראות את המאפיינים והשיטות של VBA ListObject.

לדוגמא, אם ברצוננו לבחור את הטבלה כולה, עלינו להשתמש באובייקט "טווח" ומתחת לכך, עלינו להשתמש בשיטת "בחר".

קוד:

MyTable.Range. בחר

זה יבחר את כל טבלת הנתונים כולל הכותרת.

  • אם ברצונך לבחור רק את תוכן הטבלה ללא כותרות עלינו להשתמש ב- "DataBodyRange".

קוד:

MyTable.DataBodyRange.Select

ככה, אנחנו יכולים לשחק עם שולחנות.

  • Below is the list of activity codes for your reference.

Code:

 Sub List_Objects_Example2() Dim MyTable As ListObject Set MyTable = ActiveSheet.ListObjects("EmpTable") MyTable.DataBodyRange.Select 'To Select data range without headers MyTable.Range.Select 'To Select data range with headers MyTable.HeaderRowRange.Select 'To Select table header rows MyTable.ListColumns(2).Range.Select 'To select column 2 including header MyTable.ListColumns(2).DataBodyRange.Select 'To select column 2 without header End Sub 

Like this, we can use the “ListObject” collection to play around with excel tables.

Things to Remember

  • VBA ListObject is the collection of objects to reference excel tables.
  • To access ListObject collection first we need to specify what worksheet we are referring to is.