如何在vba中订购不同的列?

我想要订购一个列,每次运行macros时都会在不同的位置。 这是我目前完成操作的代码:

Range(ActiveCell, ActiveCell.Offset(1000, 1)).Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(ActiveCell), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range(ActiveCell, ActiveCell(1000, 1)) .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With 

偏移量为1000的原因是我不知道列中有多less条目,但我知道它将小于1000 …偏移量为1,它将数值(在1中列偏移量)及其公司名称标识符。 不知道如何修复代码,但在debugging时,我试图运行后特意遇到错误:

 ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(ActiveCell), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 

有任何想法吗?

Range(ActiveCell)不起作用,因为ActiveCell本身就是一个范围。 所以只需使用ActiveCell而不是Range(ActiveCell) 。 更好的是,避免Active...和。select凯尔build议