Tự sort khi nhấp vào tiêu đề. (1 người xem)

  • Thread starter Thread starter iloveit
  • Ngày gửi Ngày gửi

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

iloveit

Thành viên thường trực
Tham gia
2/3/13
Bài viết
212
Được thích
52
Giới tính
Nam
Nghề nghiệp
Tự do
Hôm nay tôi có nhu cầu này và lên diễn đàn thì tìm được code của 1 anh trên diễn đàn.

Tôi đã thử nhưng nếu tiêu đề của tôi không phải ở dòng 1 mà nằm ở dòng 5 chẳng hạn thì khi đó nhấp vào không sort được.

Anh chị nào giúp tôi sửa code lại để có thể Sort khi tiêu đề nằm ở những dòng khác với.

Cám ơn các anh chị.


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Target.Row <> 1 Then Exit Sub
Rows("2:65536").Sort Key1:=Cells(2, Target.Column), _
Order1:=xlAscending, Header:=xlNo

End Sub
 
Không có file nhưng để thay đổi dòng sort thì bạn chỉnh chỗ đỏ đỏ trong đoạn code này xem nó thay đổi sao nhé:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub - Nếu select nhiều ô thì thoát Sub (không làm gì cả)
If Target.Row <> 1 Then Exit Sub - Nếu ô chọn có chỉ số dòng khác 1 thì thoát Sub
Rows("2:65536").Sort Key1:=Cells(2, Target.Column), _
Order1:=xlAscending, Header:=xlNo

End Sub
 
Upvote 0
Bây giờ tôi muốn khi nhấn vào tiêu đề lần thứ 1 thì sort tăng dần, nhấp lần nữa thì sort giảm dần cứ thế lặp lại thì them code như thế nào? Nhờ mọi người viết giúp.
 
Upvote 0
Bây giờ tôi muốn khi nhấn vào tiêu đề lần thứ 1 thì sort tăng dần, nhấp lần nữa thì sort giảm dần cứ thế lặp lại thì them code như thế nào? Nhờ mọi người viết giúp.

Vấn đề chỉ là tìm xem hiện tại đang ở tình trạng giảm dần hay tăng dần. Có 2 cách:

1. so ô đầu tiên với ô cuối cùng, nếu nhỏ hơn thì hiện đang ở tình trạng tăng dần.

2. ghi Comment cho cell: "Gaim dan" hay "Tang dan". Cứ dò cái comment này thì biết.
 
Upvote 0
Ý tôi là code ở bài 2 khi nhấp vào tiêu đề thì chỉ sắp xếp tăng dần, khi click lần nữa vào tiêu đề thì nó không sắp xếp giảm dần được.

Bây giờ tôi muốn khi nhấp vào lần nữa thì sắp xếp tăng, nhấp tiếp thì lại sắp xếp giảm cứ thế lặp lại.
 
Upvote 0
Ý tôi là code ở bài 2 khi nhấp vào tiêu đề thì chỉ sắp xếp tăng dần, khi click lần nữa vào tiêu đề thì nó không sắp xếp giảm dần được.

Bây giờ tôi muốn khi nhấp vào lần nữa thì sắp xếp tăng, nhấp tiếp thì lại sắp xếp giảm cứ thế lặp lại.

xlAscending Này cho biết tăng dần xlDescending Này cho biết giảm dần, bạn thế nó vào code trên cho phù hợp.
 
Upvote 0
Ý tôi là code ở bài 2 khi nhấp vào tiêu đề thì chỉ sắp xếp tăng dần, khi click lần nữa vào tiêu đề thì nó không sắp xếp giảm dần được.

Bây giờ tôi muốn khi nhấp vào lần nữa thì sắp xếp tăng, nhấp tiếp thì lại sắp xếp giảm cứ thế lặp lại.

Bạn hỏi cách thực hiện hay nhờ làm giùm?
Tôi chỉ giải thích cách thực hiện chứ không làm giùm.
Nếu bạn không thể code thì chịu khó chờ người thích làm giùm.
 
Upvote 0
Bạn hỏi cách thực hiện hay nhờ làm giùm?
Tôi chỉ giải thích cách thực hiện chứ không làm giùm.
Nếu bạn không thể code thì chịu khó chờ người thích làm giùm.

Bạn thông cảm.
Tôi không biết VBA nên chỉ lên diễn đàn lượm mấy code về dùng, có chỗ sửa được có chỗ không được thì lên nhờ làm giùm.
 
Upvote 0
Vấn đề chỉ là tìm xem hiện tại đang ở tình trạng giảm dần hay tăng dần. Có 2 cách:

1. so ô đầu tiên với ô cuối cùng, nếu nhỏ hơn thì hiện đang ở tình trạng tăng dần.

2. ghi Comment cho cell: "Gaim dan" hay "Tang dan". Cứ dò cái comment này thì biết.

Cái ý 1 bạn nói tôi hiểu rồi, code chắc như thế này. Nhưng code này chỉ có tác dụng đối với 1 cột E thôi, và thực hiện bằng nút bấm chứ không phải click vào tiêu đề.
Có điều tôi chưa thể tùy biến vào trường hợp của mình, chờ mọi người giúp thôi.

Sub CommandButton1_Click()


Dim xlSort As XlSortOrder
Dim LastRow As Long


With ActiveSheet


LastRow = .Cells(.Rows.Count, "E").End(xlUp).Row


If (.Range("E2").Value > .Range("E" & CStr(LastRow))) Then
xlSort = xlAscending
Else
xlSort = xlDescending
End If


.Range("E2:E" & LastRow).Sort Key1:=.Range("E2"), Order1:=xlSort, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal


End With
ActiveWorkbook.Save


End Sub
 
Upvote 0
Cái ý 1 bạn nói tôi hiểu rồi, code chắc như thế này. Nhưng code này chỉ có tác dụng đối với 1 cột E thôi, và thực hiện bằng nút bấm chứ không phải click vào tiêu đề.

...

Tôi không hề nói chuyện về nút bấm.

Lúc bấm vào ô tiêu đề thì sự kiện selection_change bắt lấy target là ô tiêu đề. Từ ô tiêu đề phanh ra cột, đâu phải dựa vào dữ liệu cố định là cột E.
 
Upvote 0

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

Back
Top Bottom