2016-06-20 46 views
-1

我有一個宏,它可以根據自定義排序對我的所有數據進行排序,但是我想在不同的工作表上使用它,如果可以這麼說,我有這個不同的最後一行「數字」這裏的代碼,但我不斷收到一個錯誤:將整個工作表排序到最後一行

,只是讓你知道我正在整理O列

Sub SortDays() 

' SortDays Macro 



lRow = Worksheets("Banner Summary").Cells(Rows.Count, "B").End(xlUp).Row 
Range("B1").Select 
Range("A1:A" & lRow).Select 
Range("O2").Activate 
ActiveWorkbook.Worksheets("Banner Summary").Sort.SortFields.Clear 
ActiveWorkbook.Worksheets("Banner Summary").Sort.SortFields.Add Key:=Range(_ 
    "O2:O" & lRow), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ 
    "M,T,W,R,F", DataOption:=xlSortNormal 
With ActiveWorkbook.Worksheets("Banner Summary").Sort 
    .SetRange Range("A1:A" & lRow) 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
End Sub 

的錯誤是:「排序引用無效確保....。 「 這是相當長的,所以任何幫助將非常感激,並提前thnx^_^

+2

您的設置範圍還需要包含列O. – findwindow

回答

1

通在工作表中要排序:

Sub SortDays(byRef ws) 

' SortDays Macro 
lRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row 
'Range("B1").Select 
'Range("A1:A" & lRow).Select 
'Range("O2").Activate 
ws.Sort.SortFields.Clear 
ws.Sort.SortFields.Add Key:=Range(_ 
    "O2:O" & lRow), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ 
    "M,T,W,R,F", DataOption:=xlSortNormal 
With ws.Sort 
    .SetRange Range("A1:O" & lRow) 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
End Sub 

,那麼這將在任何工作表運行你通過它(假設你已經定義ws,你一定要使用哪個工作表:

Dim ws As Worksheet : Set ws = Workbooks("excelfilename").Worksheets("WhateverSheet") 

之前致電SubSortDays ws

相關問題