如何在VBA中引用结构化表而不引用其表

时间:2018-11-01 09:46:14

标签: excel vba excel-vba excel-tables

在VBA中,我知道可以通过以下方式引用结构化表:

  Set Tbl = Sheets("MySheetName").ListObjects("MyTblName")

然后执行Tbl.XXX,其中.XXX可以是.Name,.Range等。

但是,我要引用此表而不引用工作表名称,这样,如果工作表名称更改,宏就不会中断。

这可能吗?

3 个答案:

答案 0 :(得分:2)

经过一番研究,我发现了一些并非完美的解决方案。 您可以像这样在VBA中使用Range函数:

Set tbl = Range("TableName[#All]")

但是,这不是ListObject而是Range。您还可以进行其他引用,例如:

结构化表的主体(不包括标题)

Range("TableName")

称为主体的“ MyColumn”的列

Range("TableName[MyColumn]")

然后,您致电类似: tbl.ListObject引用找到范围的结构化表。

来源:https://peltiertech.com/structured-referencing-excel-tables/

答案 1 :(得分:1)

如果您的表位于ActiveSheet上,则可以像下面这样使用它:

Set Tbl = ActiveSheet.ListObjects("MyTblName")

答案 2 :(得分:0)

为什么不引用工作表的“内部”名称而不是其可见名称?

enter image description here