运行时错误1004sorting函数VBA

当我运行这段代码时,似乎有一半的时间出现错误1004,而我完全不知道为什么:

Dim ranged As Range Set ranged = Range("AJ2") Set ranged = Range(ranged, ranged.End(xlDown)) Sheets(i).Select ActiveWorkbook.Worksheets(i).Sort.SortFields.Add Key:=ranged, _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(i).Sort .SetRange ranged .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

代码正在通过一系列工作表运行,并且AJ列中的范围在每个工作表上的大小不同,因此在开始时范围定义是必要的。 目标是颠倒范围的顺序。 任何人都可以帮助错误是在这里?

  1. 在大多数情况下,您不需要select工作表。 你可能想看到这个

  2. 不要使用xlDown来构build你的范围。 使用xlUp通过查找最后一行有数据。 你可能想看到这个

结合上述,您的代码可以看起来像下面。 请尝试一下。 ( UNTESTED

 Dim ranged As Range Dim lRow As Long ' '~~> Rest of the code ' With ThisWorkbook.Sheets(i) '~~> Find Last row in Col AJ which has data lRow = .Range("AJ" & .Rows.Count).End(xlUp).Row '~~> Construct your range Set ranged = .Range("AJ2:AJ" & lRow) '~~> Sort .Sort.SortFields.Add Key:=ranged, _ SortOn:=xlSortOnValues, _ Order:=xlDescending, _ DataOption:=xlSortNormal With .Sort .SetRange ranged .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With ' '~~> Rest of the code ' 

试用和testing版本

 Sub Sample() Dim ranged As Range Dim lRow As Long, i As Long For i = 1 To ThisWorkbook.Sheets.Count ' '~~> Rest of the code ' With ThisWorkbook.Sheets(i) '~~> Find Last row in Col AJ which has data lRow = .Range("AJ" & .Rows.Count).End(xlUp).Row '~~> Construct your range Set ranged = .Range("AJ2:AJ" & lRow) '~~> Sort .Sort.SortFields.Add Key:=ranged, _ SortOn:=xlSortOnValues, _ Order:=xlDescending, _ DataOption:=xlSortNormal With .Sort .SetRange ranged .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End With ' '~~> Rest of the code ' Next i End Sub