按列A排序不工作的Excel VBA

时间:2017-07-28 16:41:37

标签: excel vba excel-vba sorting

我试图按照范围A2-A30000中的A列进行排序,我想在第A行第1行进行下拉,但它既没有排序也没有启用A列第1行的下拉列表。即使没有VBA当我只选择A1并按下过滤器时,它会自动结束将下拉列表放在A2上。发生的另一个问题是它只对A列进行排序,但只是移动A列,但只留下其他列,导致整个工作表出错。

ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Add Key:=Range("A2"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
    .SetRange Range("A2:A30000")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

知道可能出现什么问题吗?

2 个答案:

答案 0 :(得分:1)

ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet3").Sort.SortFields.Add Key:=Range("A2"), _
    SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet3").Sort
    .SetRange Range("A2:BZ30000")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

感谢您的评论

答案 1 :(得分:1)

您只引用A列;使用.CurrentRegion属性将数据“孤岛”隔离到第一个完全空白的行和完全空白的列。我怀疑你在A1中有一个文本列标签。

With ActiveWorkbook.Worksheets("Sheet3")
    With .Cells(1, "A").CurrentRegion
        .Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
                    Orientation:=xlTopToBottom, Header:=xlYes
    End With
End With

录制的代码在某些情况下可以正常工作,但可以通过VBA功能更有效地处理排序。

你真的应该知道你是否有标题;永远不要使用xlGuess。