如何在sorting时按名称引用此表格列?

第三行错误5错误,无效的过程调用或参数。

Set tbl = ActiveSheet.ListObjects(1) tbl.Sort.SortFields.Clear tbl.Sort.SortFields.Add Key:=tbl.Range("Table[Matter ID]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

我知道问题是tbl.Range("Table[Matter ID]") ,我已经通过使用tbl.Range.Cells(8)修复它,它的工作原理。 但是, 为什么不第一个工作?

我可以去?tbl.Range.Address并获得一个有效的范围地址。

我可以去?tbl.Range.Resize(1).Address并得到一个有效的范围地址。

名称“表”和“物质ID”是正确的。 Excel表(ListObjects)的一个优点是可以按名称引用列。 我究竟做错了什么?

在tbl中没有Range(“Table [Matter ID]”),但在tbl.parent内有一个Range(“Table [Matter ID]”)。

 Option Explicit Sub aswqer() Dim tbl As ListObject Set tbl = ActiveSheet.ListObjects(1) With tbl .Sort.SortFields.Clear .Sort.SortFields.Add Key:=.Parent.Range("table[Matter ID]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .Sort.Apply End With End Sub 

Range(“table [Matter ID]”)是表所在工作表的子项,而不是表的子项。

在这里输入图像说明