Excel VBA 运行时错误 1004

5

我正在使用Excel 2010的VBA,但随机收到以下错误:

运行时错误 '1004':“排序引用无效。请确保它在您要排序的数据内,并且第一个“Sort By”框不同或为空。”

这是代码:

'Sort the active rows
With ActiveWorkbook.Worksheets("Product Backlog").Sort
    .SetRange Range("A4:F51")
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

1
最可能的原因是您不在所需的工作表内。请勿使用ActiveWorkbook,而要使用Sheets("xxxxx") - Tony Dallimore
1个回答

4

排序框是空的,这就是你的问题。我从未像你这样使用过Sort对象,但我可以看出你没有定义一个键或范围来进行排序,只是定义了要排序的范围。应该定义一个键,例如Range("A4")或其他内容。我查了一下,应该在其中加入.sortfields.add(range),例如:

'Sort the active rows

    With ActiveWorkbook.Worksheets("Product Backlog").Sort
        .SetRange Range("A4:F51")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin

        .SortFields.Add Key:=Range("A4:F51").Columns(1), SortOn:=xlSortOnValues, _
         Order:=xlDescending, DataOption:=xlSortNormal

        .Apply
    End With

我使用Sort函数如下:

ActiveWorkbook.Worksheets("Product Backlog").Range("A4:F51").Sort _
    Key1:= ActiveWorkbook.Worksheets("Product Backlog").Range("A4:F51").Columns(1), _
    Header:= xlYes, _
    Orientation:=xlSortColumns, _
    MatchCase:=False, _
    SortMethod:=xlPinYin

如果您打开了多个工作簿,请确保使用Workbooks("MyWorkbook").Activate激活您的工作簿,如果您要使用ActiveWorkbook。 - Motomotes
那就是我需要的,谢谢。顺便说一下,我不得不把方向改回我原来的方式,否则会发生奇怪的事情(Orientation = xlTopToBottom)。 - Aaron
1
是的抱歉,xlSortColumns = xlTopToBottom,xlSortRows = xlLeftToRight。 - Motomotes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接