Excel-VBAsorting不起作用

我有一个sortingfunction的问题。 它不起作用。 如果我手动sorting时loggingmacros,logging看起来像我的。 小组看起来如下:

Public Sub sortSelectionByDate(ByRef wrksheet As Worksheet, ByVal fromRow As Integer, ByVal toRow As Integer) 'debug toRow = toRow - 1 wrksheet.Select wrksheet.Rows(fromRow & ":" & toRow).Select With Selection .Sort Key1:=Range("A9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End With End Sub 

先谢谢你….

克里斯托夫

这很可能不起作用,因为您传递的不是活动工作表的工作表,不激活它,然后尝试sorting。 以下是您遇到问题描述的链接: 开始VBA:select并激活 。 长话短说,从来没有使用。select或。select,除非你想让你的用户能够select他的select运行代码。 即使如此,仍然不是一个好主意。 这是你的子重写在一行:

 Public Sub sortSelectionByDate(ByRef wrksheet As Worksheet, ByVal fromRow As Integer, ByVal toRow As Integer) wrksheet.Rows(fromRow & ":" & toRow - 1).Sort Key1:=wrkSheet.Range("A9"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom End Sub 

重要的变化是:

  • 不需要使用。select。 如果你想使用它,你需要先使用wrkSheet.Activate。
  • 将Key1:=范围(“A9”)更改为Key1:= wrkSheet.Range(“A9”)。 在使用单元格/范围时总是有助于做到明确。
  • With语句不需要,因为你只运行一个方法。