Computer >> Máy Tính >  >> Phần mềm >> Office

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Microsoft Excel cung cấp nhiều cách để xóa Bộ lọc tự động từ trang tính hoặc Bảng Excel. Trong bài viết này, bạn sẽ tìm hiểu 7 các phương pháp để xóa Bộ lọc tự động nếu nó tồn tại trong Excel bằng tập lệnh VBA.

Bạn có thể tải xuống tệp Excel từ liên kết sau và thực hành cùng với nó.

7 Ví dụ về việc sử dụng VBA để loại bỏ bộ lọc tự động nếu nó tồn tại trong Excel

1. Loại bỏ AutoFilter khỏi Active Worksheet Nếu nó tồn tại

Ảnh chụp màn hình sau đây hiển thị Bộ lọc tự động trong trang tính đang hoạt động. Chúng tôi sẽ xóa Tự động lọc này sử dụng VBA mã.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Nếu bạn muốn xóa Bộ lọc tự động từ trang tính đang hoạt động sau đó làm theo các bước bên dưới:

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Public Sub RemoveAFActiveWorksheet()

  If ActiveSheet.AutoFilterMode Then
     ActiveSheet.AutoFilterMode = False
  End If

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Tại đây, tôi đã tạo một Thủ tục phụ Public Sub RemoveAFActiveWorksheet
  • Tiếp theo, tôi đã sử dụng Câu lệnh IF để kiểm tra xem có tồn tại bất kỳ Bộ lọc tự động nào nếu tồn tại nó sẽ xóa AutoFilter khi tôi đặt AutoFilterMode thành Sai .

❺ Quay lại trang tính đang hoạt động và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAFActiveWorksheet và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ bạn sẽ thấy Bộ lọc tự động đã bị loại bỏ và tất cả dữ liệu đều hiển thị ngay bây giờ.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Đọc thêm: Excel VBA để kiểm tra xem Tự động lọc có được bật hay không (4 cách dễ dàng)

2. Sử dụng VBA để xóa AutoFilter khỏi tất cả các trang tính

Nhìn vào hình ảnh sau đây. Bạn có thể thấy Bộ lọc tự động được áp dụng trên cả hai trang tính. Bây giờ chúng ta sẽ viết VBA mã để xóa Bộ lọc tự động từ tất cả các trang tính trong sổ làm việc .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Để xóa Bộ lọc Tự động khỏi tất cả các trang tính trong sổ làm việc làm theo các bước bên dưới:

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Public Sub DeleteAFfromallWorksheets()

  Dim xWs1 As Worksheet

  For Each xWs1 In ActiveWorkbook.Worksheets
   If xWs1.AutoFilterMode = True Then
      xWs1.AutoFilterMode = False
   End If
  Next xWs1

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Ở đây, tôi đã sử dụng Vòng lặp for để tìm kiếm cho Tự động lọc trong mỗi trang tính.
  • Tiếp theo, tôi đã sử dụng Câu lệnh IF để kiểm tra xem có tồn tại an Nếu tồn tại nó sẽ xóa AutoFilter khi tôi đặt ActiveSheet.AutoFilterMode thành Sai .

❺ Quay lại trang tính của bạn và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAfromallWorksheets và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ, bạn sẽ thấy tất cả các biểu tượng Tự động lọc đã bị xóa từ tất cả các trang tính trong sổ làm việc của bạn giống như hình dưới đây:

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

3. Xóa tự động lọc khỏi một cột của bảng

Trong hình bên dưới, bạn có thể thấy Bộ lọc tự động chỉ được áp dụng trong cột đầu tiên của cái bàn. Trong phương pháp này, chúng tôi sẽ viết mã để xóa Bộ lọc Tự động khỏi một cột duy nhất của một bảng trong Excel.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Để làm điều đó,

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

❸ Bây giờ Sao chép VBA sau mã.

Sub DeleteAFSingleColumnfromTable()

    Dim xWs1 As Worksheet
    Dim xTableName1 As String
    Dim xLT1 As ListObject

    xTableName1 = "TableA"
    Set xWs1 = Sheets("MyTable1")
    Set xLT1 = xWs1.ListObjects(xTableName1)
    xLT1.Range.AutoFilter Field:=1

End Sub

❹ Sau đó, Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Đầu tiên, tôi đã khai báo 3 biến.
  • Sau đó, tôi đã chèn tên bảng Đặt tên trang tính .
  • Sau đó, tôi đã sử dụng ListObjects thuộc tính hiển thị tất cả nội dung của bảng .
  • Cuối cùng, tôi nhập một chỉ mục cột của bảng sử dụng Trường tự động lọc

❺ Quay lại trang tính của bạn và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAFSingleColumnfromTable và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sau đó, bạn sẽ thấy Bộ lọc tự động không còn tồn tại trong cột đầu tiên trong bảng của bạn.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

4. Xóa tự động lọc khỏi nhiều cột của bảng

Hình ảnh sau đây cho thấy hai AutoFilter biểu tượng trong đầu tiên thứ hai cột của một bảng. Bạn có thể làm theo phương pháp này để xóa Tự động lọc từ hai cột của bảng sử dụng VBA .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ, hãy làm theo các bước bên dưới để xóa Tự động lọc nếu nó tồn tại từ nhiều cột trong Bảng Excel.

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Sub DeleteAFMultiColumnsfromTable()

    Dim xWs1 As Worksheet
    Dim xTableName1 As String
    Dim xLT1 As ListObject

    xTableName1 = "TableA"
    Set xWs1 = Sheets("MyTable1")
    Set xLT1 = xWs1.ListObjects(xTableName1)

    xLT1.Range.AutoFilter Field:=1
    xLT1.Range.AutoFilter Field:=2

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Đầu tiên, tôi đã khai báo 3 biến.
  • Sau đó, tôi đã chèn tên bảng Đặt tên trang tính .
  • Sau đó, tôi đã sử dụng ListObjects thuộc tính hiển thị tất cả nội dung của bảng .
  • Cuối cùng, tôi nhập hai chỉ mục cột của bảng sử dụng Trường tự động lọc

❺ Bây giờ, quay lại trang tính và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro DeleteAFMultiColumnsfromTable và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sau khi chạy mã, bạn sẽ thấy Bộ lọc tự động bị loại bỏ từ nhiều cột.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Đọc thêm: [Khắc phục]:Phương pháp tự động lọc của lớp phạm vi không thành công (5 giải pháp)

5. Xóa tự động lọc khỏi toàn bộ bảng bằng Excel VBA

Nếu bạn có Bộ lọc tự động đã áp dụng trong bảng của bạn giống như hình bên dưới và muốn xóa tất cả chúng, sau đó thực hiện theo phương pháp này.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Sub RemoveAFfromEntireTable()

  Dim xWs1 As Worksheet
  Dim xTable1 As String
  Dim xTable2 As ListObject

  xTable1 = "TableB"
  Set xWs1 = ActiveSheet
  Set xTable2 = xWs1.ListObjects(xTable1)
  xTable2.AutoFilter.ShowAllData

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Đầu tiên, tôi đã khai báo 3 biến.
  • Sau đó, tôi đã chèn tên bảng tiếp theo Đặt tên trang tính dưới dạng ActiveSheet .
  • Sau đó, tôi đã sử dụng ListObjects thuộc tính hiển thị tất cả nội dung của bảng và sử dụng Set để lưu trữ nó trong xTable2
  • Cuối cùng, tôi đã sử dụng ShowAllData thuộc tính tắt Tự động lọc .

❺ Quay lại trang tính có một bảng và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAFfromEntireTable và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ là Bộ lọc tự động sẽ bị loại bỏ từ Toàn bộ Bảng giống như hình dưới đây:

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

6. Xóa tự động lọc khỏi trang tính được bảo vệ bằng mật khẩu nếu tồn tại

Tập dữ liệu sau được hiển thị trong hình bên dưới đã Tự động lọc được kích hoạt và được bảo vệ bằng mật khẩu . Đó là 7878 .

Trong phương pháp này, bạn sẽ nhận được mã VBA để xóa ra Tự động lọc từ trang tính được bảo vệ bằng mật khẩu như thế này.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ hãy làm theo các bước bên dưới:

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Sub RemoveAFwithPass()

Dim UserPwd As String
UserPwd = "7878"

With ActiveSheet
    .Unprotect Password:=UserPwd
    .ShowAllData
    .Protect _
        Contents:=True, _
        AllowFiltering:=True, _
        UserInterfaceOnly:=True, _
        Password:=UserPwd
End With

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Đầu tiên, tôi đã khai báo một biến nhập mật khẩu.
  • Sau đó, trong ActiveSheet , Tôi đã chỉ định Mật khẩu người dùng vào Bỏ bảo vệ mật khẩu.
  • Đã sử dụng ShowAllData tài sản để hiện mọi thứ.
  • Sau đó, tôi đã chỉ định Đúng vào Nội dung , AllowFiltering UserInterfaceOnly để bỏ bảo vệ tất cả.

❺ Quay lại trang tính được bảo vệ bằng mật khẩu và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAFwithPass và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sau đó, Bộ lọc tự động sẽ bị loại bỏ và tất cả các bản ghi sẽ được hiển thị như thế này:

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

7. Sử dụng VBA để loại bỏ tự động lọc khỏi trang tính được bảo vệ mà không cần mật khẩu

Hình ảnh sau đây cho thấy một tập dữ liệu được bảo vệ không có mật khẩu . Trong phương pháp này, chúng tôi sẽ viết mã để xóa AutoFilter khỏi được bảo vệ không cần mật khẩu trang tính.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Bây giờ hãy làm theo các bước bên dưới:

❶ Trước hết, nhấn ALT + F11 để mở VBA Editor.

❷ Sau đó đi tới Chèn >> Mô-đun .

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Sao chép VBA sau mã.

Sub RemoveAFwithoutPass()

With ActiveSheet
    .Unprotect
    .ShowAllData
    .Protect _
        Contents:=True, _
        AllowFiltering:=True, _
        UserInterfaceOnly:=True
End With

End Sub

Dán Lưu mã trong VBA Editor.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phân tích mã

  • Đầu tiên, tôi đã áp dụng Với trong ActiveSheet và sử dụng Unprotect thuộc tính để mở khóa
  • Sau đó, tôi đã sử dụng ShowAllData tài sản để hiện mọi thứ.
  • Sau đó, tôi đã chỉ định Đúng vào Nội dung , AllowFiltering UserInterfaceOnly để bỏ bảo vệ tất cả.

❺ Quay lại trang tính đang hoạt động và nhấn ALT + F11 để mở Macro hộp thoại.

❻ Chọn macro RemoveAFwithoutPass và nhấn nút Chạy nút.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Cuối cùng, AutoFilter sẽ được xóa và tất cả dữ liệu sẽ được hiển thị như thế này:

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Phần thực hành

Bạn sẽ nhận được một trang tính Excel giống như ảnh chụp màn hình sau đây, ở cuối tệp Excel được cung cấp. Nơi bạn có thể thực hành tất cả các phương pháp được thảo luận trong bài viết này.

Excel VBA:Xóa tự động lọc nếu nó tồn tại (7 ví dụ)

Kết luận

Tóm lại, chúng ta đã thảo luận về 7 các phương pháp để loại bỏ Bộ lọc tự động nếu nó tồn tại sử dụng VBA trong Excel. Bạn nên tải xuống sách bài tập thực hành đính kèm với bài viết này và thực hành tất cả các phương pháp với tài liệu đó. Và đừng ngần ngại đặt bất kỳ câu hỏi nào trong phần bình luận bên dưới. Chúng tôi sẽ cố gắng trả lời tất cả các truy vấn có liên quan càng sớm càng tốt. Và vui lòng truy cập trang web của chúng tôi Exceldemy để khám phá thêm.

Các bài viết liên quan

  • VBA để tự động lọc với nhiều tiêu chí trên cùng một trường trong Excel (4 phương pháp)
  • Cách tự động lọc các giá trị không bằng một giá trị nhất định với VBA trong Excel
  • Bộ lọc tự động VBA:Sắp xếp Nhỏ nhất đến Lớn nhất (3 Phương pháp)
  • Cách tự động lọc và sao chép hàng hiển thị bằng Excel VBA