Tính năng AutoFilter của Excel thực sự hiệu quả để trích xuất dữ liệu dựa trên điều kiện nhất định. Nhưng đôi khi do sự cố kỹ thuật, AutoFilter bị ẩn hoặc ngay cả khi không có bộ lọc, Excel vẫn hiển thị là có. Trong trường hợp đó, rất khó hiểu liệu AutoFilter có được bật cho trang tính Excel hay không. Triển khai VBA là phương pháp hiệu quả, nhanh nhất và an toàn nhất để chạy bất kỳ thao tác nào trong Excel. Trong bài viết này, chúng tôi sẽ chỉ cho bạn 4 cách dễ dàng và nhanh chóng để kiểm tra xem AutoFilter có bật không trong Excel với macro VBA.
Tải xuống sổ làm việc
Bạn có thể tải xuống sổ làm việc Excel thực hành miễn phí từ đây.
4 cách nhanh với VBA để kiểm tra xem AutoFilter có bật không trong Excel
Theo dõi phần này, bạn sẽ học cách kiểm tra xem AutoFilter có bật không trong Excel với VBA theo 4 cách khác nhau.

Trên là bộ dữ liệu ví dụ mà bài viết này sẽ theo dõi để mô tả các quy trình.
1. Nhúng VBA để kiểm tra xem AutoFilter có bật hay tắt trong trang tính Excel
Trong phần này, bạn sẽ học cách kiểm tra xem AutoFilter có bật cho trang tính Excel với VBA. Các bước thực hiện được đưa ra dưới đây.
Các bước:
- Ban đầu, nhấn Alt + F11 trên bàn phím hoặc vào tab Nhà phát triển -> Visual Basic để mở Trình soạn thảo Visual Basic.

- Tiếp theo, trong cửa sổ mã bật lên, từ thanh menu, nhấp Chèn -> Mô-đun.

- Sau đó, sao chép mã sau và dán vào cửa sổ mã.
Sub AutoFilterCheck() If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If End Sub
Mã của bạn giờ đã sẵn sàng chạy.

- Bây giờ, nhấn F5 trên bàn phím hoặc từ thanh menu chọn Chạy -> Chạy Sub/UserForm. Bạn cũng có thể chỉ nhấp vào biểu tượng Chạy nhỏ trong thanh menu con để chạy macro.

Sau khi thực thi mã thành công, hãy nhìn hình ảnh sau để kiểm tra kết quả.

Bây giờ, nhìn hình ảnh trên. Mặc dù không có mũi tên bộ lọc trong bộ dữ liệu, MsgBox của Excel đang báo cho chúng ta biết AutoFilter đang bật trên trang tính này.
Triển khai VBA thực sự thuận tiện cho các kịch bản này nơi có sự không chắc chắn về bất kỳ thao tác nào; VBA macro giúp bạn trích xuất kết quả chính xác ngay cả khi mắt bạn không thấy chúng.
Giải thích mã VBA
If ActiveSheet.AutoFilterMode = True Then MsgBox "Auto Filter is turned on" Else MsgBox "Auto Filter is turned off" End If
Đoạn mã này đề cập đến nếu chế độ auto filter là true cho trang tính đang hoạt động, thì trả về thông báo "Auto Filter is turned on" trong MsgBox Excel; Ngược lại, nó ném thông báo "Auto Filter is turned off".
Đọc thêm: Excel VBA: Xóa AutoFilter nếu tồn tại (7 cách)
2. Gỡ lỗi mã VBA và lấy số lượng tổng AutoFilter trong trang tính đang hoạt động
Phần này sẽ chỉ cho bạn cách bạn có thể gỡ lỗi mã và đếm có bao nhiêu AutoFilter trong một trang tính Excel. Sau khi thực thi mã, nó sẽ ném kết quả trong cửa sổ Immediate của Excel VBA.
Các bước để lấy được đưa ra dưới đây.
Các bước:
- Cùng cách như trước, mở Trình soạn thảo Visual Basic từ tab Nhà phát triển và Chèn một Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán vào cửa sổ mã.
Sub CountAutoFilters() Dim iCount As Long If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount End Sub
Mã của bạn giờ đã sẵn sàng chạy.

- Sau đó, Chạy macro như chúng tôi đã chỉ ở phần trên. Kết quả hiển thị trong hình ảnh dưới đây.

Như bạn thấy trong hình ảnh trên, trong cửa sổ Immediate bạn sẽ nhận được tổng số AutoFilter được bật trong trang tính của bạn.
Giải thích mã VBA
Dim iCount As Long
Khai báo biến.
If ActiveSheet.AutoFilterMode = True Then iCount = 1 Debug.Print "AutoFilterMode Count: " & iCount
Hai dòng này trong mã có nghĩa là, nếu chế độ auto filter là true cho trang tính đang hoạt động, thì bắt đầu đếm và in tổng số lượng.
Đọc thêm: VBA AutoFilter với nhiều tiêu chí trên cùng trường trong Excel (4 phương pháp)
3. Áp dụng VBA để kiểm tra xem một cột cụ thể có được lọc hay không trong Excel
Giả sử bạn muốn kiểm tra xem một cột cụ thể trong bảng tính Excel của bạn có được lọc hay không với VBA.
Hãy xem các bước làm thế nào.
Các bước:
- Như đã chỉ trước, mở Trình soạn thảo Visual Basic từ tab Nhà phát triển và Chèn một Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán vào cửa sổ mã.
Sub CheckColumnFilter() Dim iSheet As Worksheet Set iSheet = ActiveSheet If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If End Sub
Mã của bạn giờ đã sẵn sàng chạy.

- Sau đó, Chạy macro và xem hình ảnh sau để thấy đầu ra.

Bây giờ, xem xét hình ảnh trên. Mặc dù bạn có thể thấy có mũi tên bộ lọc ở cột B, macro đang báo cho chúng ta là không. Vì vậy, sau khi thực thi mã thành công, chúng ta có thể nói cột B không được AutoFilter.
Giải thích mã VBA
Dim iSheet As Worksheet
Khai báo biến cho trang tính.
Set iSheet = ActiveSheet
Lưu trữ trang tính đang hoạt động trong biến đã khai báo.
If iSheet.AutoFilter.Filters(2).On Then MsgBox "Column B is filtered." Else MsgBox "Column B is not filtered." End If
Đoạn mã này đề cập đến nếu auto filter cho Cột 2 hoặc Cột B là true cho trang tính đang hoạt động, thì trả về thông báo "Column B is filtered." trong MsgBox Excel; Ngược lại, nó ném thông báo "Column B is not filtered.".
Đọc thêm: Cách tự động lọc giá trị không bằng giá trị nhất định với VBA trong Excel
4. Macro VBA để kiểm tra AutoFilter được bật trong sổ làm việc Excel
Trong phần này, bạn sẽ học cách bạn có thể kiểm tra AutoFilter được bật hoặc tắt cho một trang tính trong một sổ làm việc Excel cụ thể.
Các bước thực hiện được đưa ra dưới đây.
Các bước:
- Trước tiên, mở Trình soạn thảo Visual Basic từ tab Nhà phát triển và Chèn một Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán vào cửa sổ mã.
Sub CheckAutofilterSheet() Dim z As Double For z = 1 To ThisWorkbook.Sheets.Count If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next End Sub
Mã của bạn giờ đã sẵn sàng chạy.

- Tiếp theo, Chạy macro. Bây giờ, xem hình ảnh sau để thấy kết quả.

Như bạn thấy trong hình ảnh trên, sổ làm việc của chúng ta có trang tính tên "Dataset". MsgBox của Excel đang cho chúng ta thấy trang tính "Dataset" có AutoFilter bật. Bạn có thể thực hiện mã này cho tất cả bảng tính trong một sổ làm việc Excel cụ thể.
Giải thích mã VBA
Dim z As Double
Khai báo biến.
For z = 1 To ThisWorkbook.Sheets.Count
Bắt đầu vòng lặp từ trang tính 1 đến tổng số trang tính của sổ làm việc hiện tại.
If ThisWorkbook.Sheets(z).AutoFilterMode Then MsgBox ThisWorkbook.Sheets(z).Name & " has enabled Autofilter" End If Next
Nếu trang tính đầu tiên có chế độ auto filter bật, thì ném thông báo trong MsgBox. Sau đó, mã kết thúc điều kiện và đi đến trang tính tiếp theo để thực hiện lặp. Nó tiếp tục làm như vậy cho đến khi đạt tất cả số lượng trang tính của sổ làm việc hiện tại.
Đọc thêm: Cách tự động lọc và sao chép hàng hiển thị với Excel VBA
Kết luận
Để kết luận, bài viết này đã chỉ cho bạn 4 cách dễ dàng và nhanh chóng để kiểm tra xem AutoFilter có bật không trong Excel với macro VBA. Tôi hy vọng bài viết này đã rất hữu ích cho bạn. Đừng ngần ngại hỏi bất kỳ câu hỏi nào về chủ đề này.
Bài viết liên quan
- [Sửa lỗi]: Phương pháp AutoFilter của lớp Range thất bại (5 giải pháp)
- VBA AutoFilter: Sắp xếp từ nhỏ đến lớn (3 phương pháp)