Excel VBA错误400当我添加sorting到我的macros的末尾

我有一个相对较长的子,它将数据添加到另一个工作表的一堆列的基础上来自哪里。 这部分的代码完美的工作,但我想sorting表中的所有行到最后一行添加。 我添加到最后的sorting代码工作,如果我硬编码的范围内包含什么单元格,但我的范围将增长每次运行子,所以我试图使范围包括variables我命名为下一个空行(1MaxRows)。

当我这样做时,我得到一个错误,说“400”,在过去,当我得到这个错误,这是因为我引用的工作表或工作簿错误,但这次我没有改变任何工作表引用。 我的代码给了我这个错误的部分如下:

Columns("A:Q").Select ActiveWorkbook.Worksheets("Raw Data").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Raw Data").Sort.SortFields.Add Key:=range("A2:A & lMaxRows" _ ), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets("Raw Data").Sort.SortFields.Add Key:=range("B2:B & lMaxRows" _ ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Raw Data").Sort .SetRange range("A1:Q & lMaxRows") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

我试图用一些方法来改变范围代码,但是我总是得到一个溢出错误或400错误。 感谢您的帮助。

您应该使用正确的工作表限定您的范围调用,并且您的地址中的错误位置也有引号。 例如:

 Dim ws As Worksheet Set ws = ActiveWorkbook.Worksheets("Raw Data") With ws.Sort.SortFields .Clear .Add Key:=ws.Range("A2:A" & lMaxRows), SortOn:=xlSortOnValues, _ Order:=xlAscending, DataOption:=xlSortNormal .Add Key:=ws.Range("B2:B" & lMaxRows), SortOn:=xlSortOnValues, _ Order:=xlDescending, DataOption:=xlSortNormal End With With ws.Sort .SetRange ws.Range("A1:Q" & lMaxRows) .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

我假设你已经正确地声明和赋值给lMaxRows (并注意,它是LMAXROWS而不是1MAXROWS与一个数字在开始。