Sửa lỗi code sắp xếp dữ liệu (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

onlylove0610

Thành viên chính thức
Tham gia
5/4/13
Bài viết
67
Được thích
6
Kính chào mọi người. Em làm thu marco sắp xếp dữ liệu cho 3 sheet giống nhau bằng 3 code như bên dưới (chỉ thay mỗi Worksheets("tinhche") thành tên sheet khác. sau đó chạy lại thì bị lỗi Method... Apply.
Do file >1BM nên ko up lên được.Mong mọi người giúp đỡ chỉnh giúp em.
Sub sapxep() Application.ScreenUpdating = False
Range("A8:AB3540").Select
Range("AB3540").Activate
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Add Key:=Range("A9:A3540" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Add Key:=Range("B9:B3540" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Add Key:=Range("G9:G3540" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Add Key:=Range("F9:F3540" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("tinhche").Sort.SortFields.Add Key:=Range("E9:E3540" _
), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("tinhche").Sort
.SetRange Range("A8:AB3540")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A8").Select
Application.ScreenUpdating = True
End Sub
 
Nhìn code thì thấy bạn không chỉ chỉnh ở Worksheets("tinhche")
Bạn còn làm lệch chỗ khác nữa, nhưng bạn không nới hết hoặc không nhớ hết những gì mình đã làm.

Tuy nhiên, tính tôi không giống người khác, tôi không thích đoán mò. Bạn phải nói rõ câu
nguyên văn ra sao.

Tốt hơn hết là bạn thu macro và sửa lại. Lần này thì ráng nhớ mình đã làm những gì.
 
Upvote 0
Kính chào mọi người. Em làm thu marco sắp xếp dữ liệu cho 3 sheet giống nhau bằng 3 code như bên dưới (chỉ thay mỗi Worksheets("tinhche") thành tên sheet khác. sau đó chạy lại thì bị lỗi Method... Apply.
Do file >1BM nên ko up lên được.Mong mọi người giúp đỡ chỉnh giúp em.

Bạn thay code này vào
PHP:
Sub sapxep()
Dim SortRng As Range
Set SortRng = Worksheets("tinhche").Range("A9:A3540")
Worksheets("tinhche").Sort.SortFields.Clear
With Worksheets("tinhche").Sort
   .SortFields.Add SortRng
   .SortFields.Add SortRng.Offset(, 1)
   .SortFields.Add SortRng.Offset(, 6)
   .SortFields.Add SortRng.Offset(, 5)
   .SortFields.Add SortRng.Offset(, 4)
   .SetRange SortRng.Resize(, 28)
   .Header = xlYes
   .Apply
End With
End Sub
Hoặc như vầy. Khi cần chỉ thay tên sheet là chạy
PHP:
Sub sapxep()
Dim SortRng As Range
With Worksheets("tinhche")
    Set SortRng = .Range("A9:A3540")
    .Sort.SortFields.Clear
    With .Sort
        .SortFields.Add SortRng
        .SortFields.Add SortRng.Offset(, 1)
        .SortFields.Add SortRng.Offset(, 6)
        .SortFields.Add SortRng.Offset(, 5)
        .SortFields.Add SortRng.Offset(, 4)
        .SetRange SortRng.Resize(, 28)
        .Header = xlYes
        .Apply
    End With
End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Lỗi Method 'Apply' of object 'Sort' failed bạn ạ.
Mình xóa bớt nội dung thì đính kèm được lên rồi. Code của bạn quanghai cũng không được.
Mục đích mình là click cái tự nó sắp xếp cho mình. Cột A,B bé đến lớn G E F lớn đến bé
Bạn quanghai ơi mình có thể PM nhờ bạn giúp riêng được không. Vì với file này mình làm nặng quá.Click chọn delay mất 3,4 s. Mình muốn hỏi, nhờ bạn giúp đỡ về các code trong đó. Để có thể 10.000 dòng lọc cho ra kết quả nhanh hơn.
Bạn có skype thì càng tốt. Cám ơn bạn rất nhiều
 

File đính kèm

Upvote 0
Nói chung lệnh sort trên sheet phai active sheet đó mới ổn. Bạn thử thêm dòng sau:

Mã:
[COLOR=#000000][COLOR=#0000BB]Sub sapxep[/COLOR][COLOR=#007700]()
[/COLOR][COLOR=#0000BB]Dim SortRng [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range
With Worksheets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"tinhche"[/COLOR][COLOR=#007700])[/COLOR][/COLOR]
[SIZE=4][B][COLOR=#ff0000].Select[/COLOR][/B][/SIZE]
...........................
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng không được bạn ạ
Nói chung lệnh sort trên sheet phai active sheet đó mới ổn. Bạn thử thêm dòng sau:

Mã:
[COLOR=#000000][COLOR=#0000BB]Sub sapxep[/COLOR][COLOR=#007700]()
[/COLOR][COLOR=#0000BB]Dim SortRng [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Range
With Worksheets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]"tinhche"[/COLOR][COLOR=#007700])[/COLOR][/COLOR]
[SIZE=4][B][COLOR=#ff0000].Select[/COLOR][/B][/SIZE]
...........................
 
Upvote 0
Code của bạn chỉ chạy với excel 2007+ vì từ 2007, đối tượng sort mới được bổ sung, đối tượng sort này chỉ dùng cho sheet, có các property như trong code (đối tượng này khác phương thức sort của range vẫn như 2003)
Mình ghi macro rồi chạy luôn tại file của mình mà nên không liên quan gì đến version cả.
Mình có up file ở #4 mong mọi người giúp đỡ
 
Upvote 0
Mình ghi macro rồi chạy luôn tại file của mình mà nên không liên quan gì đến version cả.
Mình có up file ở #4 mong mọi người giúp đỡ
Theo help của Microsoft thì object sort mới thêm vào từ 2007. Mình chạy file của bạn trên 2007 bình thường, bạn thử chạy xem. Excel 2003 thì báo lỗi tại dòng đầu tiên dùng obj sort.
 
Upvote 0
Bạn hơi bảo thủ đấy, file của bạn là Excel2003 mà code của bạn ở cấp cao hơn thì chạy làm sao? Với Exc2003 chỉ sắp xếp tối đa trên 3 cột và câu lệnh có khác.

.Sort.SortFiel với Exc2003 chưa có nha.
 
Upvote 0
Bạn thay code này vào
Hoặc như vầy. Khi cần chỉ thay tên sheet là chạy
PHP:
Sub sapxep()
Dim SortRng As Range
With Worksheets("tinhche")
    Set SortRng = .Range("A9:A3540")
    .Sort.SortFields.Clear
    With .Sort
        .SortFields.Add SortRng
        .SortFields.Add SortRng.Offset(, 1)
        .SortFields.Add SortRng.Offset(, 6)
        .SortFields.Add SortRng.Offset(, 5)
        .SortFields.Add SortRng.Offset(, 4)
        .SetRange SortRng.Resize(, 28)
        .Header = xlYes
        .Apply
    End With
End With
End Sub
Cho em hỏi chỗ này nếu muốn thêm CustomOrder thì phải thêm như thế nào ạ?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom