Hoàn chỉnh giúp em Code Auto Filter tự động ẩn dòng! (1 người xem)

Liên hệ QC

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

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,330
Được thích
1,767
Chào thầy cô & anh chị!
Em có mày mò viết Code Auto Filter tự động ẩn dòng, nhưng chưa chạy được.
Thầy cô & anh chị giúp em hòan chỉnh cái Code này!
Em cảm ơn.
 

File đính kèm

Hongvan xem lại đoan code chỗ này:
.AutoFilter Field:=1, Criteria1:="<>"
' .AutoFilter '<- bỏ đi xem thế nào?
 
Upvote 0
Hongvan xem lại đoan code chỗ này:
.AutoFilter Field:=1, Criteria1:="<>"
' .AutoFilter '<- bỏ đi xem thế nào?
Cảm ơn anh!
Em đã sửa lại code, nhưng vẫn còn một số điểm sau:
1/ Em chỉnh sửa đọan
PHP:
With Sheet2.Range("A11:J23")
Để nó hiện dòng 23 (là dòng "CỘNG"), nhưng sau khi Filter nó vẫn che mất dòng này!
2/ Em muốn sau khi Filter thì những dấu tam giác ngược BIẾN MẤT.
Mong anh và mọi người giúp em!
 
Upvote 0
Cảm ơn anh!
Em đã sửa lại code, nhưng vẫn còn một số điểm sau:
1/ Em chỉnh sửa đọan
PHP:
With Sheet2.Range("A11:J23")
Để nó hiện dòng 23 (là dòng "CỘNG"), nhưng sau khi Filter nó vẫn che mất dòng này!
2/ Em muốn sau khi Filter thì những dấu tam giác ngược BIẾN MẤT.
Mong anh và mọi người giúp em!
Chính xác là vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$G$4" Then
    Range("A11:A22").AutoFilter 1, "<>", , , False
  End If
End Sub
Ngoài ra để dòng CỘNG không bị che mất, bạn nên chuyển nó xuống dòng 24 (tức cách 1 dòng so với dữ liệu mà ta Filter)
 
Upvote 0
Chính xác là vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$G$4" Then
    Range("A11:A22").AutoFilter 1, "<>", , , False
  End If
End Sub
Ngoài ra để dòng CỘNG không bị che mất, bạn nên chuyển nó xuống dòng 24 (tức cách 1 dòng so với dữ liệu mà ta Filter)

Em cảm ơn Thầy & các anh chị!

Sau khi chép code & thực hiện thay đổi Range("A11:A22") thành Range("A11:A24") thì code vẫn ẩn dòng A23 (Dòng cộng), Em cũng test lại trên máy tính khác thì vẫn bị lỗi như vậy.
Mặt khác, khi em mở song hành File này và một File có code cũng dùng Filter (dùng nút "Lọc", "Không lọc" của thầy trên diễn đàn) và một một số đọan code khác thì File (đính kèm) KHÔNG CHỊU LỌC NỮA!?
Thầy có thể cho em biết khi ta mở nhiều File có Macro thì các File có ảnh hưởng gì đến lẫn nhau không? & thầy test lại giùm em File đính kèm.
Em cảm ơn.
----------
Ta cũng có thể để chữ "CỘNG" ở Cell A23 thì nó không ẩn dòng! nhưng em muốn biết nguyên nhân.
 

File đính kèm

Upvote 0
Em cảm ơn Thầy & các anh chị!

Sau khi chép code & thực hiện thay đổi Range("A11:A22") thành Range("A11:A24") thì code vẫn ẩn dòng A23 (Dòng cộng), Em cũng test lại trên máy tính khác thì vẫn bị lỗi như vậy.
Mặt khác, khi em mở song hành File này và một File có code cũng dùng Filter (dùng nút "Lọc", "Không lọc" của thầy trên diễn đàn) và một một số đọan code khác thì File (đính kèm) KHÔNG CHỊU LỌC NỮA!?
Thầy có thể cho em biết khi ta mở nhiều File có Macro thì các File có ảnh hưởng gì đến lẫn nhau không? & thầy test lại giùm em File đính kèm.
Em cảm ơn.
----------
Ta cũng có thể để chữ "CỘNG" ở Cell A23 thì nó không ẩn dòng! nhưng em muốn biết nguyên nhân.
Bạn không chịu đọc kỹ gì cả!
- Tôi nói là dời dòng CỘNG xuống dưới dữ liệu 1 dòng (tức từ dòng 23, dời dòng CỘNG xuống dòng 24... Vậy giữa dòng CỘNG và dữ liệu sẽ cách nhau 1 dòng rổng)
- Còn bạn lại đi sửa code : A1:A22 đi sửa thành A1:A24
Hic...
 
Upvote 0
Bạn không chịu đọc kỹ gì cả!
- Tôi nói là dời dòng CỘNG xuống dưới dữ liệu 1 dòng (tức từ dòng 23, dời dòng CỘNG xuống dòng 24... Vậy giữa dòng CỘNG và dữ liệu sẽ cách nhau 1 dòng rổng)
- Còn bạn lại đi sửa code : A1:A22 đi sửa thành A1:A24
Hic...

Em cảm ơn Thầy!
Sau khi dời dòng cộng xuống dòng 24, khi chạy code nó không ẩn dòng 23 (dòng rỗng)!!!
 
Upvote 0
Em cảm ơn Thầy!
Sau khi dời dòng cộng xuống dòng 24, khi chạy code nó không ẩn dòng 23 (dòng rỗng)!!!
Thôi thì dùng cách này đi cho dễ
1> Đầu tiên ta trả dòng CỘNG về vị trí cũ (dòng 23)
2> Tiếp theo sửa code lại chút:

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  On Error Resume Next
  If Target.Address = "$G$4" Then
    Range("A11:A2[COLOR=#ff0000][B]3[/B][/COLOR]").AutoFilter 1, "<>", , , False
  End If
End Sub
tức sửa tham chiếu thành A11:A23, bao luôn cả dòng CỘNG
3> Merge A23:B23 lại với nhau
4> Chạy code thí nghiệm
Lưu ý: Nếu không muốn Merge A23:B23 thì có thể gõ 1 ký tự gì đó vào A23 cũng được
 

File đính kèm

Upvote 0
Anh NDU ơi vui lòng giải thich giúp cú pháp False trong code của anh viết có ý nghĩa thế nào vậy? Cảm ơn anh.
 
Upvote 0
Chào anh ndu!
Khi lọc với AutoFilter trên vùng dữ liệu có những ô trống ở vùng cuối thường bị Excel tự động mở rộng và che luôn các dòng này.
Thường có nhiều giải pháp cho vấn đề này - như cách làm của anh chẳng hạn. Nếu không Merge A23:B23, ta có thể chuyển chữ Cộng vào ô A23 luôn cho tiện.
Ngoài ra, có thể dùng AdvanceFilter để giải quyết (tất nhiên phải tạo vùng điều kiện - [STT] > 0).
Một lần nữa chào anh, chúc anh khỏe!
Thân
 
Upvote 0
ngâm cứu cái list trong ex2003 hoặc table 2007 nhiều chức năng tương tự mạnh.
 
Upvote 0
Muốn dòng CỘNG nằm ở dòng bất kỳ (không cố định ở dòng A23) bạn dùng thử code sau:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Cells.AutoFilter
If Target.Address = "$G$4" Then _
Range("a11:a" & Cells.Find("*", , , 1, 1, 2).Row - 1).AutoFilter 1, "<>", , , False
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom