运行时错误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列中的范围在每个工作表上的大小不同,因此在开始时范围定义是必要的。 目标是颠倒范围的顺序。 任何人都可以帮助错误是在这里?
-
在大多数情况下,您不需要select工作表。 你可能想看到这个
-
不要使用
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