VBA ListObjects | Excel VBA中ListObject Excel表指南

什么是VBA中的ListObject?

在表中,通常我们看到的是数据集,但是在VBA术语中,还有更多信息,例如总数据列表范围的范围,该列称为列表列,该行称为列表行,依此类推。 ,因此为了访问此属性,我们有一个称为Listobjects的内置函数,该函数与工作表函数一起使用。

VBA ListObject是在编写VBA代码时引用excel表的一种方法。通过使用VBA LISTOBJECTS,我们可以创建,删除表,并且完全可以在VBA代码中使用excel表。 Excel表格非常棘手,对于初学者来说,甚至在一定程度上,中级用户都发现使用表格很难。由于本文讨论了在VBA编码中引用excel表的问题,因此最好对excel中的表有所了解。

当数据转换为表格时,我们不再使用一系列单元格,而是需要使用表格范围,因此在本文中,我们将向您展示如何使用excel表有效地编写VBA代码。

在Excel VBA中使用ListObjects创建表格式

例如,查看下面的excel数据。

使用VBA ListObject代码,我们将为此数据创建表格式。

您可以在此处下载此VBA ListObjects Excel模板– VBA ListObjects Excel模板
  • 首先,对于此数据,我们需要找到最后使用的行和列,因此定义两个变量即可找到该行和列。

代码:

 Sub List_Objects_Example1()Dim LR作为长Dim LC作为Long End Sub 

  • 要查找最后使用的行和列,请使用以下代码。

代码:

LR =单元格(行。计数,1)。结束(xlUp)。行LC =单元格(1,列。计数)。结束(xlToLeft)。列

  • 现在再定义一个变量来保存数据引用。

代码:

 昏暗范围 

  • 现在,使用以下代码设置对此变量的引用。

代码:

 设置Rng = Cells(1,1).Resize(LR,LC)

现在我们需要使用VBA的“ ListObject.Add”方法创建一个表,下面的语法是相同的。

ListObject.Add(源,XlListObjectHasHeaders,目标,TableStyleName)

来源: 这与我们要插入表格的单元格范围无关。所以我们可以在这里提供两个参数 “ xlSrcRange” “ xlSrcExternal”。

XlListObjectHasHeaders: 表插入数据是否具有标题。如果可以,我们可以提供 “ xlYes” 如果没有,我们可以提供 “ xlNo”。

目的地: 这不过是我们的数据范围。

桌子风格: 如果您想应用任何表格样式,我们可以提供样式。

  • 好的,现在在活动表中我们正在创建表,因此下面的代码将为我们创建一个表。

代码:

 昏暗的Ws作为工作表集Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange,xllistobjecthasheaders:= xlYes,目的地:= Rng

  • 此后,我们需要为该表命名。

代码:

Ws.ListObjects(1).name =“ EmpTable”

  • 下面是完整的代码,供您参考。

代码:

 Sub List_Objects_Example1()Dim LR作为长Dim LC作为Long LR =像元(Rows.Count,1).End(xlUp).Row LC =像元(1,Columns.Count).End(xlToLeft).Column Dim Rng如范围设置Rng =单元格(1,1).Resize(LR,LC)昏暗Ws作为工作表设置Ws = ActiveSheet Ws.ListObjects.Add xlSrcRange,xllistobjecthasheaders:= xlYes,Destination:= Rng Ws.ListObjects(1).name =“ EmpTable“结束子 

好的,让我们运行代码,看看魔术。

它已针对所提到的数据创建了表,并将表名指定为 “ EmpTable”.

使用VBA ListObjects格式化Excel表格

创建Excel表后,我们可以使用vba ListObject集合处理表。

  • 首先,将变量定义为“ ListObject”。

代码:

 Sub List_Objects_Example2()Dim MyTable作为ListObject End Sub 

  • 现在,通过使用表名设置对此变量的引用。

代码:

 Sub List_Objects_Example2()将MyTable设置为ListObject Set MyTable = ActiveSheet.ListObjects(“ EmpTable”)结束Sub 

现在,变量“ MyTable”保存了表“ EmpTable”的引用。

  • 输入变量名称并加一个点以查看VBA ListObject的属性和方法。

例如,如果要选择整个表,则需要使用“ Range”对象,在此之下,我们需要使用“ Select”方法。

代码:

MyTable.Range.Select

这将选择整个数据表,包括标题。

  • 如果您只想选择表的内容而没有标题,那么我们需要使用“ DataBodyRange”。

代码:

MyTable.DataBodyRange.Select

这样,我们就可以玩桌子了。

  • 以下是活动代码列表,供您参考。

代码:

 Sub List_Objects_Example2()将MyTable设置为ListObject Set MyTable = ActiveSheet.ListObjects(“ EmpTable”)MyTable.DataBodyRange.Select'要选择不包含标题的数据范围MyTable.Range.Select'要选择具有标题MyTable.HeaderRowRange.Select的数据范围选择表标题行MyTable.ListColumns(2).Range.Select'选择包含标题MyTable.ListColumns(2).DataBodyRange.Select的第2列'选择不包含标题End Sub的第2列 

这样,我们可以使用“ ListObject”集合来处理excel表。

要记住的事情

  • VBA ListObject是引用excel表的对象的集合。
  • 要首先访问ListObject集合,我们需要指定我们要引用的工作表。