Excel 从VBA代码起作用,到代码中没有更改,然后代码突然不起作用';行不通

Excel 从VBA代码起作用,到代码中没有更改,然后代码突然不起作用';行不通,excel,vba,Excel,Vba,我使用以下代码对两列进行排序 Sub SortMultipleColumns() Sheet1.Activate With ActiveSheet.Sort .SortFields.Add Key:=Range("Q10"), Order:=xlAscending .SortFields.Add Key:=Range("R10"), Order:=xlAscending .SetRange Range("Q10

我使用以下代码对两列进行排序

Sub SortMultipleColumns()

Sheet1.Activate


With ActiveSheet.Sort
     .SortFields.Add Key:=Range("Q10"), Order:=xlAscending
     .SortFields.Add Key:=Range("R10"), Order:=xlAscending
     .SetRange Range("Q10:R9999")
     .Header = xlNo
     .Apply
End With

End Sub 
列Q是整数,列R是字符串


排序工作正常,5分钟后我没有做任何更改,我知道我遇到了以下错误:“运行时错误1004”应用程序定义的错误或对象定义的错误。根据调试器,错误会在.Apply

之后出现。请尝试添加.SortFields.Clear,然后再添加键。否则,它将再次尝试添加相同的键,这可能是导致错误的原因

With ActiveSheet.Sort
     .SortFields.Clear
     .SortFields.Add Key:=Range("Q10"), Order:=xlAscending
     .SortFields.Add Key:=Range("R10"), Order:=xlAscending
     .SetRange Range("Q10:R9999")
     .Header = xlNo
     .Apply
End With

感谢您,它似乎也适用于工作表(“Sheet1”).Range(“Q10:R”和.Range(“R10”).End(xlDown).Row)。Sort Key1:=范围(“R10”),Order1:=xlAscending,Header:=xlNo End with如果您最多使用3个字段,则可以使用更简单的方法。