簡體   English   中英

Excel-VBA排序不起作用

[英]Excel-VBA Sort doesn't work

我的排序功能有問題。 沒用 如果我在手動排序時記錄宏,則記錄的內容看起來像我的。 子看起來如下:

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

先感謝您....

克里斯多夫

它很可能無法正常工作,因為您傳遞的不是工作表,而不是激活工作表,然后嘗試進行排序。 以下是指向您所遇到問題的描述的鏈接: 開始VBA:選擇並激活 長話短說,除非您希望用戶能夠根據自己的選擇來運行代碼,否則切勿使用.Select或.Selection。 即使那樣,仍然不是一個好主意。 這是您的子代碼改寫成一行:

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:= Range(“ A9”)更改為Key1:= wrkSheet.Range(“ A9”)。 在使用單元格/范圍時,始終有助於明確。
  • 因為只運行一種方法,所以不需要With語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM