由于错误而无法排序1084排序参考无效

时间:2014-11-07 18:32:38

标签: excel sorting excel-vba vba

我是VBA领域的初学者,如果有人能帮助我,我将不胜感激。

基本上r1c1是用于选择行和列的变量,这有助于我选择定义的范围。

但是,当我尝试对此选定范围进行排序时,会弹出error 1084。我已经尝试了很多版本的排序方法,但问题仍然存在。这是我的代码

With ActiveWorkbook.Worksheets("Main").Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range(Cells(8, 1), Cells(r1 + 5000, c1 + 8)), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange Range(Cells(8, 1), Cells(r1 + 5000, c1 + 8))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

1 个答案:

答案 0 :(得分:0)

问题在于这两行

Key:=Range(Cells(8, 1), Cells(r1 + 5000, c1 + 8))

.SetRange Range(Cells(8, 1), Cells(r1 + 5000, c1 + 8))

您的范围和单元格对象不是完全限定的。试试这个(未经测试

同样在.SortFields.Add中,Key:应仅引用一列。例如,如果您要对第1列进行排序,请将Key:=Range(Cells(8, 1), Cells(r1 + 5000, c1 + 8))更改为Key:=Range(Cells(8, 1), Cells(r1 + 5000, 1))

Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Main")

With ws.Sort
    .SortFields.Clear
    .SortFields.Add Key:=ws.Range(ws.Cells(8, 1), ws.Cells(r1 + 5000, 1)), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    .SetRange ws.Range(ws.Cells(8, 1), ws.Cells(r1 + 5000, c1 + 8))
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

不知怎的,我仍然更喜欢Excel 2003的排序方式。例如

ws.Somerng.Sort Key1:=ws.Range("A2"), Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal