我正在尝试使用此代码进行排序:
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(ActiveCell.Column & ":12", ActiveCell.Column & ":125")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我录制了一个宏并得到了它,但它有静态范围
我需要它来找到第一行应该做的相关列,
它应该将列从单元格12到125(或更少)排序,单元格中的数据格式为“A12345”
当代码到达.apply行时,它会抛出错误1004,我认为我的密钥可能有问题:(我也尝试将密钥设置为与具有相同错误的范围相同)
能否指出我做错了什么?
提前致谢
答案 0 :(得分:0)
.Column属性返回列的数字索引,而不是您在Range引用中使用的字母。您可以使用(工作表).Cells(行,列)来使用数字行和列引用来引用单个单元格范围。
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range("D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(Cells(12,ActiveCell.Column), Cells(125,ActiveCell.Column))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
如果您要排序的数据大小可能不同,您可能希望查找数据集中的最后一行,而不是依赖于固定的行号。
答案 1 :(得分:0)
感谢wedge和A.S.H的组合
我已经解决了它
Range(BRPdest).Activate
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.clear
ActiveWorkbook.Worksheets("Batch Record Progress").sort.SortFields.Add Key:= _
Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Batch Record Progress").sort
.SetRange Range(Cells(12, ActiveCell.Column), Cells(125, ActiveCell.Column))
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
我必须将范围更改为建议的格式楔形,并在键中使用
非常感谢