VBA Excel (Bài 41): Cách xoá hộp thoại Advanced Filter

Khi bạn chọn lệnh Data, Filter, Advanced Filter thì Excel sẽ hiển thị hộp thoại Advanced Filter. Chắc hẳn các bạn đều biết rằng Excel “nhớ” các thông số kỹ thuật ở các phạm vi trước cả về vùng danh sách, vùng điều kiện và sao chép dữ liệu tới một phạm vi nhất định. Ở hầu hết các trường hợp thì điều này thực sự hữu ích. Nhưng nếu bạn muốn làm việc với một cơ sở dữ liệu hoàn toàn khác thì bạn sẽ muốn sử dụng dữ liệu mới thay vì sử dụng lại cơ sở dữ liệu đã có trước đó.

Không có cách nào để xóa các cài đặt có sẵn từ trước khỏi hộp thoại Advanced Filter. Tuy nhiên, bạn có thể sử dụng phương pháp VBA đơn giản được liệt kê dưới đây.

Sub ShowAdvancedFilterDialog()
‘ Delete names
On Error Resume Next
With ActiveWorkbook
.Names(“_FilterDatabase”).Delete
.Names(“Criteria”).Delete
.Names(“Extract”).Delete
End With
On Error GoTo ø
‘ Display the dialog box
Application.Dialogs(xlDialogFilterAdvanced).Show
End Sub(xlDialogFilterAdvanced).Show

CÁCH HOẠT ĐỘNG CỦA PHƯƠNG PHÁP NÀY NHƯ SAU

Excel theo dõi các đặc điểm của Bộ lọc nâng cao trước đó bằng cách sử dụng ba cái tên: _FilterDatabase, Criteria và Extract. Phần ShowAdvancedFilterDialog chỉ đơn giản là xóa các tên này, và sau đó sử dụng phương pháp Show để hiển thị hộp thoại Advanced Filter. Bởi vì những tên này không được định nghĩa, giống như khi bạn sử dụng lệnh Advanced Filter lần đầu tiên.

Lưu ý: Tên _FilterDatabase là một tên ẩn. Vì vậy, cách duy nhất để xóa nó là sử dụng mã VBA. Criteria và Extract là tên bình thường và có thể bị xóa bằng cách sử dụng hộp thoại Define Name.

CÁCH SỬ DỤNG

Để sử dụng phương pháp này, bạn cần sao chép và dán nó vào một mô-đun VBA trong bảng tính của bạn. Sau đó thực hiện macro ShowAdvancedFilterDialog thay vì lệnh Data, Filter, Advanced Filter.