【问题标题】:How to refer to this table column by name when sorting?排序时如何按名称引用此表列?
【发布时间】:2017-10-14 06:47:02
【问题描述】:

第三行错误,错误 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) 的优点之一是您可以按名称引用列。我做错了什么?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    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]") 是表格所在工作表的子级,而不是表格的子级。

    【讨论】:

    • 我认为我的问题在于对 Excel 对象模型的了解不够。你能建议一个全面的参考吗?我搜索了 MSDN,虽然它的某些页面很棒,但有些则不然。你会发现很多:transmogrify - if set to xlYes, the cell will be transmogrified. 当然,如果你真正想知道“幻化”是什么意思,那也无济于事。
    猜你喜欢
    • 2014-09-17
    • 1970-01-01
    • 2017-12-31
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多