Xin giải thích giúp đoạn code?

Liên hệ QC

huuthanhxd

Thành viên mới
Tham gia
22/4/08
Bài viết
45
Được thích
3
Nghề nghiệp
Kỹ sư xây dựng
Em đang tập tỏm VBA nên chưa hiểu lăm về code. Có đoạn code này dùng để lọc dữ liệu kiếm được trên mạng nhưng chưa hiểu được nguyên lý nên ko áp dụng được, mong mọi người hướng dẫn giúp với. Thanks cả nhà nhiều!
Mã:
Private Sub worksheet_change(ByVal Target As Range)
If Target.Address = "$G$1" Then
[A5].CurrentRegion.AutoFilter 7, IIf(Target = "", "<>", Target)
End If
End Sub
 
Em đang tập tỏm VBA nên chưa hiểu lăm về code. Có đoạn code này dùng để lọc dữ liệu kiếm được trên mạng nhưng chưa hiểu được nguyên lý nên ko áp dụng được, mong mọi người hướng dẫn giúp với. Thanks cả nhà nhiều!
Mã:
Private Sub worksheet_change(ByVal Target As Range)
If Target.Address = "$G$1" Then
[A5].CurrentRegion.AutoFilter 7, IIf(Target = "", "<>", Target)
End If
End Sub
Mã:
1. Private Sub Worksheet_Change(ByVal Target As Range)
2.     If Target.Address = "$G$1" Then
3.         [A5].CurrentRegion.AutoFilter 7, IIf(Target = "", "<>", Target)
4.     End If
5. End Sub
Code trên có thể hiểu như sau:
1. Code này sẽ chạy khi có sự thay đổi (về giá trị) trên Sheet.
2. Nếu ô có giá trị thay đổi là ô G1 thì...
3. ...vùng dữ liệu chứa ô A5 sẽ được áp dụng AutoFilter theo cột thứ 7 (tức là cột G) với điều kiện thể hiện ở hàm IIf(Target = "", "<>", Target):
- Nếu ô G1="" thì sẽ lọc các bản ghi có giá trị tại cột G khác rỗng ("<>", tương ứng khi bạn chọn NonBlanks).
- Nếu ô G1<>"" thì sẽ lọc các bản ghi có giá trị tại cột G trùng với giá trị tại ô G1.
Bạn xem trong file đính kèm, thay đổi giá trị của ô G1 để theo dõi kết quả của code.
 

File đính kèm

Upvote 0
Mã:
1. Private Sub Worksheet_Change(ByVal Target As Range)
2.     If Target.Address = "$G$1" Then
3.         [A5].CurrentRegion.AutoFilter 7, IIf(Target = "", "<>", Target)
4.     End If
5. End Sub
Code trên có thể hiểu như sau:
1. Code này sẽ chạy khi có sự thay đổi (về giá trị) trên Sheet.
2. Nếu ô có giá trị thay đổi là ô G1 thì...
3. ...vùng dữ liệu chứa ô A5 sẽ được áp dụng AutoFilter theo cột thứ 7 (tức là cột G) với điều kiện thể hiện ở hàm IIf(Target = "", "<>", Target):
- Nếu ô G1="" thì sẽ lọc các bản ghi có giá trị tại cột G khác rỗng ("<>", tương ứng khi bạn chọn NonBlanks).
- Nếu ô G1<>"" thì sẽ lọc các bản ghi có giá trị tại cột G trùng với giá trị tại ô G1.
Bạn xem trong file đính kèm, thay đổi giá trị của ô G1 để theo dõi kết quả của code.
Rất cảm ơn anh vì hướng dẫn cụ thể này. Em đã làm được và chạy rất tốt. Có vấn đề này muốn hỏi anh phát triển thêm tý đó là. Em cũng muốn dùng đoạn code này kết hợp để có thể lọc được nhiều điều kiện 1 lúc không? Ví dụ: ô G1 dùng để lọc theo cột 7, ô H1 dùng để lọc theo cột 8...
- Ngoài ra muốn hỏi mọi người là trong excel có code tìm kiếm nào theo 1 cột mà tự nhận dạng được 1 cụm từ như google không? vì nhiều khi mình không nhớ đầy đủ tên của đối tượng do đó áp dụng cách trên chắc chắn sẽ ko OK được. Rất cảm ơn mọi người!
 
Upvote 0
Rất cảm ơn anh vì hướng dẫn cụ thể này. Em đã làm được và chạy rất tốt. Có vấn đề này muốn hỏi anh phát triển thêm tý đó là. Em cũng muốn dùng đoạn code này kết hợp để có thể lọc được nhiều điều kiện 1 lúc không? Ví dụ: ô G1 dùng để lọc theo cột 7, ô H1 dùng để lọc theo cột 8...
- Ngoài ra muốn hỏi mọi người là trong excel có code tìm kiếm nào theo 1 cột mà tự nhận dạng được 1 cụm từ như google không? vì nhiều khi mình không nhớ đầy đủ tên của đối tượng do đó áp dụng cách trên chắc chắn sẽ ko OK được. Rất cảm ơn mọi người!
 
Upvote 0
... Ngoài ra muốn hỏi mọi người là trong excel có code tìm kiếm nào theo 1 cột mà tự nhận dạng được 1 cụm từ như google không? ...

Có chứ bạn, ta dùng thử dùng code với phương thức Find nhé. Trong file đính kèm, bạn có thể nhập một ký tự hoặc một hay nhiều từ vào ô màu vàng rồi Enter xem sao.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address = "$D$3" Then
    Cells.Find(Target, , , 2, 2, , 0, 0).Select
End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom