2011-12-30 64 views
6

Tôi đang sử dụng VBA cho Excel 2010 và ngẫu nhiên nhận được lỗi sau:Excel VBA Run-Time Lỗi 1004

Run-time error '1004': "The sort reference is not valid. Make sure it's within the data you want to sort, and the first Sort By box isn't the same or blank."

Đây là mã

'Sort the active rows 
With ActiveWorkbook.Worksheets("Product Backlog").Sort 
    .SetRange Range("A4:F51") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 
+1

Nguyên nhân rất có thể là bạn không trong bảng tính bắt buộc. Không sử dụng 'ActiveWorkbook', sử dụng' Sheets ("xxxxx") '. –

Trả lời

4

Các sắp xếp theo hộp là trống, mà đó là vấn đề của bạn. Tôi chưa bao giờ sử dụng một đối tượng Sắp xếp như bạn đang làm, nhưng tôi có thể thấy rằng bạn chưa xác định một khóa hoặc một dải ô để sắp xếp theo, chỉ phạm vi được sắp xếp. Một khóa nên được định nghĩa như Range ("A4") hoặc một cái gì đó. Tôi nhìn nó, nó cần phải có .sortfields.add (range) trong nó, chẳng hạn như:

'Sort the active rows 

    With ActiveWorkbook.Worksheets("Product Backlog").Sort 
     .SetRange Range("A4:F51") 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 

     .SortFields.Add Key:=Range("A4:F51").Columns(1), SortOn:=xlSortOnValues, _ 
     Order:=xlDescending, DataOption:=xlSortNormal 

     .Apply 
    End With 

tôi sử dụng Sắp xếp chức năng như sau:

ActiveWorkbook.Worksheets("Product Backlog").Range("A4:F51").Sort _ 
    Key1:= ActiveWorkbook.Worksheets("Product Backlog").Range("A4:F51").Columns(1), _ 
    Header:= xlYes, _ 
    Orientation:=xlSortColumns, _ 
    MatchCase:=False, _ 
    SortMethod:=xlPinYin 
+0

Nếu bạn có nhiều hơn một sổ làm việc mở, hãy chắc chắn Acivate workbook của bạn bằng cách sử dụng Workbooks ("MyWorkbook"). Kích hoạt, nếu bạn sẽ sử dụng ActiveWorkbook. – Motes

+0

Đó là những gì tôi cần, cảm ơn. Btw, tôi đã phải đưa định hướng trở lại cách tôi đã có nó những thứ khác lạ xảy ra (Orientation = xlTopToBottom). – Aaron

+1

Vâng xin lỗi, xlSortColumns = xlTopToBottom, xlSortRows = xlLeftToRight. – Motes

Các vấn đề liên quan