如何在vba中订购变量列?

时间:2016-07-05 17:21:12

标签: excel vba excel-vba

我想订购一个每次运行宏时位于不同位置的列。以下是我目前完成操作的代码:

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的原因是我不知道列中会有多少条目,但我知道它将小于1000 ...偏差为1它可以对数值进行排序(这是在那1列偏移量)和他们的公司名称标识符,在另一列。不确定如何修复代码,但在调试中,我在尝试运行后特意得到错误:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

map不起作用,因为Range(ActiveCell)本身就是一个范围。因此,只需使用ActiveCell代替ActiveCell。更好的是,避免凯尔建议的Range(ActiveCell)Active...