Hỏi về Loc Advanced Filter (1 người xem)

Liên hệ QC

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

foreverfor

Thành viên chính thức
Tham gia
24/7/11
Bài viết
77
Được thích
2
Nghề nghiệp
Police
Cho mình hỏi, mình dùng công cụ lọc Advanced Filter qua VBA. Cho mình hỏi, có dùng được hai điều kiện lọc cùng một lúc (tức 2 marco) được không.
Ví dụ:
1.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$D$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("A5:E50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("E1:F2"), CopyToRange:=Sheet9.Range("G5:K5")

End Sub


2.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$AD$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("G5:K50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("AB1:AC2"), CopyToRange:=Sheet9.Range("AG5:AK5")

End Sub


Khi mình dùng marco báo lỗi đoạn này "Private Sub Worksheet_Change(ByVal Target As Range)"
 
Cho mình hỏi, mình dùng công cụ lọc Advanced Filter qua VBA. Cho mình hỏi, có dùng được hai điều kiện lọc cùng một lúc (tức 2 marco) được không.
Ví dụ:
1.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$D$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("A5:E50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("E1:F2"), CopyToRange:=Sheet9.Range("G5:K5")

End Sub


2.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$AD$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("G5:K50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("AB1:AC2"), CopyToRange:=Sheet9.Range("AG5:AK5")

End Sub


Khi mình dùng marco báo lỗi đoạn này "Private Sub Worksheet_Change(ByVal Target As Range)"
Theo mình hiểu thì ý của bạn là khi thay đổi giá trị tại ô D2 thì chạy thủ tục worksheet_change, vậy tại sao không đặt điều kiện là if target.address="$D$2" có hơn không, đặt chi 2 điều kiện cho mệt.
Cái nữa là phần copy của bạn từ E1:F2 có 2 dòng, nhưng khi copyto thì chỉ có 1 dòng là dòng 5. Bạn coi lại, có thể lỗi chỗ đó.
 
Cho mình hỏi, mình dùng công cụ lọc Advanced Filter qua VBA. Cho mình hỏi, có dùng được hai điều kiện lọc cùng một lúc (tức 2 marco) được không.
Ví dụ:
1.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$D$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("A5:E50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("E1:F2"), CopyToRange:=Sheet9.Range("G5:K5")

End Sub


2.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or Target.Address <> "$AD$2" Then Exit Sub
[G6:K50].Clear
Sheet9.Range("G5:K50").AdvancedFilter xlFilterCopy, _
CriteriaRange:=Sheet9.Range("AB1:AC2"), CopyToRange:=Sheet9.Range("AG5:AK5")

End Sub


Khi mình dùng marco báo lỗi đoạn này "Private Sub Worksheet_Change(ByVal Target As Range)"
Đâu thể viết 2 code change cùng lúc như vậy, nó báo lỗi là đúng rồi
Theo tôi thì code trên phải sửa thành vậy
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
  With Sheet9
    If Target.Address = "$D$2" Then
      Range("G6:K50").Clear
      .Range("A5:E50").AdvancedFilter 2, .Range("E1:F2"), .Range("G5:K5")
    ElseIf Target.Address = "$AD$2" Then
      Range("G6:K50").Clear
      .Range("G5:K50").AdvancedFilter 2, .Range("AB1:AC2"), .Range("AG5:AK5")
    End If
  End With
End Sub
Tính tôi vốn cẩn thận, phải có file để thí nghiệm thì mới dám chắc nó chạy được hay không. Ở đây bạn chỉ đưa code, không có file nên tôi cũng chỉ sửa theo kinh nghiệm. Chạy được hay không tự bạn thí nghiệm lấy nhé
 
Web KT

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

Back
Top Bottom