Range类的VBA Sort方法失败

时间:2016-12-01 17:59:20

标签: excel vba excel-vba sorting runtime-error

我知道这个主题有几个主题,但没有一个答案帮助解决了这个错误。

我正在尝试使用三个键对表进行排序,但收到错误,“运行时错误'1004':Range类的排序方法失败”

我尝试将“Range(”L2“)”更改为“.Range(”L2“)”并收到错误,“编译错误:无效或不合格的参考”

我已经尝试指定实际范围而不是使用列,我已经删除了最后两个键并尝试了第一个,仍然收到了运行时错误。

shtData.Activate

shtData.Range(Range("A2"), Range("Z8000").End(xlUp)).Sort _
Key1:=Range("L2"), Order1:=xlAscending, _
Key2:=Range("M2"), Order2:=xlAscending, _
Key3:=Range("B2"), Order3:=xlAscending, _
Header:=xlYes

如果您有任何建议,我将不胜感激。我昨天有这个工作,我的excel崩溃了,并没有恢复我所做的更改,我无法弄清楚为什么我今天无法让它工作。

2 个答案:

答案 0 :(得分:2)

你很可能没有" Z"柱

如果数据行范围可以通过列安排大小" A"不是空单元格然后像下面那样

Option Explicit

Sub main()
    Dim shtData As Worksheet

    Set shtData = Worksheets("Data") '<--| some setting of 'shtData'
    With shtData
        .Range("Z2", .Cells(.Rows.Count, "A").End(xlUp)).Sort _
        Key1:=.Range("L2"), Order1:=xlAscending, _
        Key2:=.Range("M2"), Order2:=xlAscending, _
        Key3:=.Range("B2"), Order3:=xlAscending, _
        Header:=xlYes
    End With
End Sub

答案 1 :(得分:1)

如果有可能在将来再次更改列数,您可以执行类似的操作。

With shtData
Range(Range("A2"), Cells(Range("A8000").End(xlUp).Row, Range("ZZ2").End(xlLeft).Column)

这样它会自动调整排序区域的大小,无论您使用的列数是多少,还是行。