无法在宏上的Excel中对列进行排序

时间:2017-10-17 10:58:45

标签: excel vba excel-vba

我正在尝试录制一个从A-Z对列进行排序但得到运行时错误1004的宏。我点击了调试,行ActiveCell.Offset(0, 21).Range("Table8[[#Headers],[Operations ticket]]").Select以黄色突出显示。

这是我第一次参加VBA / Macros。谢谢你的帮助。

Sub Macro21()
'
' Macro21 Macro
'

'
    ActiveCell.Offset(0, 21).Range("Table8[[#Headers],[Operations ticket]]").Select
    ActiveWorkbook.Worksheets("Sheet7").ListObjects("Table8").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet7").ListObjects("Table8").Sort.SortFields.Add _
        Key:=ActiveCell.Offset(-1, 0).Range("Table8[[#All],[Operations ticket]]"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet7").ListObjects("Table8").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

1 个答案:

答案 0 :(得分:0)

当您录制宏时,它会记录您的操作与光标在该点的位置有关。如果在光标位于不同位置的情况下重新运行宏,它将尝试对单元格执行操作,这些单元格与当前光标位置具有与录制宏时受影响的位置相同的关系。在这种情况下,您的代码引用

   ActiveCell.Offset(0, 21)

这是光标位置右侧的21列单元格。根据光标的位置,该单元格可能不在您想要的表格中。

但是,在这种情况下,该行对您的代码没有影响,可以删除,这可以解决您的问题。但一般情况下,开始录制时应始终注意光标所在的位置。