无法获取 Range 类的 Sort 属性

Abs*_*the 2 excel vba

执行排序时出现上述错误。我已经完全限定了所有对象并检查了我的变量是否包含正确的值。错误发生在第一行:

With ws.Columns("A:E").Sort
    .SortFields.Clear
    .SortFields.Add Key:=ws.Range("A2:A" & oldLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange ws.Range("A1:E" & oldLastRow)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Run Code Online (Sandbox Code Playgroud)

我如何引用范围似乎并不重要,每一个都给出了相同的错误:

With ws.Range("A:E").Sort


With ws.Range("A1:E" & oldLastRow).Sort
Run Code Online (Sandbox Code Playgroud)

范围的每个单元格中都有数据,列有标题。什么可能导致这个问题?

Rob*_*zie 5

ws.Columns("A:E").Sort正在调用与工作表类不同Sort的 a 函数:RangeSort

在此处输入图片说明

(在 VBA 编辑器中按 F2 进入该屏幕)

因此,如果您只删除.Columns("A:E")代码段的,您的代码可能会起作用,例如:

With ws.Sort
    .SortFields.Clear
    .SortFields.Add Key:=ws.Range("A2:A" & oldLastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange ws.Range("A1:E" & oldLastRow)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Run Code Online (Sandbox Code Playgroud)

您已经说出了要排序的内容,.SetRange ws.Range("A1:E" & oldLastRow)因此您可以看到在With语句中包含它有点多余(以及生成错误)。

PS我明白了

运行时错误“438”:对象不支持此属性或方法