在VBA中,我知道可以通过以下方式引用结构化表:
Set Tbl = Sheets("MySheetName").ListObjects("MyTblName")
然后执行Tbl.XXX,其中.XXX可以是.Name,.Range等。
但是,我要引用此表而不引用工作表名称,这样,如果工作表名称更改,宏就不会中断。
这可能吗?
答案 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)