(+84) 463.28.7979

AutoFilter với VBA


Hiển thị tất cả các bản ghi

Đoạn code VBA AutoFilter sau đây sẽ hiển thị tất cả các bản ghi Excel, nếu bộ lọc đã được áp dụng.

AutoFilter_VBA

Sub ShowAllRecords()

If ActiveSheet.FilterMode Then

ActiveSheet.ShowAllData

End If

End Sub

Bật AutoFilter

Bạn có thể sử dụng đoạn code VBA AutoFilter sau để bật Excel AutoFilter

Sub TurnAutoFilterOn()
'check for filter, turn on if none exists
  If Not ActiveSheet.AutoFilterMode Then
    ActiveSheet.Range("A1").AutoFilter
  End If
End Sub

Tắt AutoFilter

Bạn có thể sử dụng đoạn code VBA sau để tắt AutoFilter trong Excel

Sub TurnFilterOff()
'removes AutoFilter if one exists
  Worksheets("Data").AutoFilterMode = False
End Sub

Ẩn mũi tên trong AutoFilter

AutoFilter_VBA

Có lẽ bạn muốn người dùng chỉ lọc một cột trong bảng. Bạn có thể sử dụng đoạn code VBA sau để ẩn tất cả các mũi tên của tất cả cột trừ cột thứ 2.

Sub HideArrows()
'hides all arrows except column 2
Dim c As Range
Dim i As Integer
i = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(1, i))
 If c.Column <> 2 Then
  c.AutoFilter Field:=c.Column, _
    Visibledropdown:=False
 End If
Next
Application.ScreenUpdating = True
End Sub

Trong trường hợp khác, bạn có thể muốn ẩn các mũi tên trên các cột cụ thể, và để lại tất cả các mũi tên khác có thể nhìn thấy. Đoạn code sau đây sẽ ẩn mũi tên cho các cột 1, 3 và 4.

Để hiển thị tất cả các mũi tên, bạn có thể sử dụng đoạn code VBA Excel như sau:

Sub ShowArrows()
Dim c As Range
Dim i As Integer
i = Cells(1, 1).End(xlToRight).Column
Application.ScreenUpdating = False
For Each c In Range(Cells(1, 1), Cells(1, i))
c.AutoFilter Field:=c.Column, _
  Visibledropdown:=True
Next
Application.ScreenUpdating = True
End Sub

Nếu bảng của bạn không bắt đầu từ ô A1, bạn có thể chỉ định phạm vi nhóm và ẩn mũi tên trong các ô cụ thể trong phạm vi đó.

Sub HideArrowsRange()
'hides arrows in specified range
Dim c As Range
Dim i As Integer
Dim rng As Range
Set rng = Range("D14:J14")
i = rng.Cells(1, 1).Column - 1
Application.ScreenUpdating = False
For Each c In Range("D14:J14")
    Select Case c.Address
    Case "$E$14", "$G$14", "$J$14"
        c.AutoFilter Field:=c.Column - i, _
          Visibledropdown:=False
    Case Else
        c.AutoFilter Field:=c.Column - i, _
          Visibledropdown:=True
    End Select
Next
Application.ScreenUpdating = True
End Sub

Nếu bảng của bạn không bắt đầu trong ô A1, bạn có thể chỉ định phạm vi nhóm, và hiển thị tất cả các mũi tên trong phạm vi đó.

Sub ShowArrowsRange()
'shows arrows in specified range
Dim c As Range
Dim i As Integer
Dim rng As Range
Set rng = Range("D14:J14")
i = rng.Cells(1, 1).Column - 1
Application.ScreenUpdating = False
For Each c In Range("D14:J14")
    c.AutoFilter Field:=c.Column - i, _
      Visibledropdown:=True
Next
Application.ScreenUpdating = True
End Sub
						   Pages:  1 2

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>