excel 在表中排序

lvmkulzt  于 2023-10-21  发布在  其他
关注(0)|答案(2)|浏览(127)

我是一个新手,我试图通过尝试和错误来学习,最近我尝试创建一个表,然后根据我的数据集对该表进行排序。当我尝试对这个表进行排序时,它给了我一个错误“运行时错误'1004' -对象'_Global'的方法'Range'失败”,指向我试图排序的表的列。
我的代码如下:

Dim mainSheet As Worksheet

    Dim table As Range
    
    Set mainSheet = ActiveSheet
    Set table = Range("A1").CurrentRegion
    
    
    mainSheet.ListObjects.Add(xlSrcRange, table, , xlYes).Name = "MainAccounts"
    
    Dim tableConverted As ListObject
    Dim propertyColumn As Range
    
    Set tableConverted = mainSheet.ListObjects("MainAccounts")
    Set propertyColumn = Range(tableConverted.Name & "[[#All],[property]]")
    
    With tableConverted.Sort
        .SortFields.Clear
        .SortFields.Add Key:=propertyColumn, SortOn:=xlSortOnValues, Order:=xlDescending
        .Header = xlYes
        .Apply
    End With

我也尝试了,而不是这种类型的范围的属性列Range("MainAccounts[Property]"),这也没有工作,它似乎只是没有设置属性列变量的任何东西,所以我必须不指向正确的东西不知何故。如果有人能帮忙,那将是一个救星。谢谢你,谢谢!

cyvaqqii

cyvaqqii1#

如果没有属性列,也可能出现同样的错误。
虽然这可能不是一个理想的解决方案,但您也可以尝试下面的代码行。

Set propertyColumn = tableConverted.ListColumns("property").DataBodyRange
kpbwa7wx

kpbwa7wx2#

  • 请确保再次检查ListObject的创建是否成功。

Set tableConverted = mainSheet.ListObjects("MainAccounts")
    ' Include the header row
    Set propertyColumnAll = tableConverted.ListColumns("property").Range
    ' Exclude the header row
    Set propertyColumnNoHeader1 = tableConverted.ListColumns("property").DataBodyRange

    ' OR
    ' Exclude the header row
    Set propertyColumnNoHeader2 = mainSheet.Range(tableConverted.Name & "[property]")
  • Microsoft文档:*

ListColumns object (Excel)

相关问题