2015-03-11 13 views
5

Có cách nào để tìm ra thời điểm người dùng đã thực hiện thay đổi đối với bộ lọc trang tính không?Bộ xử lý sự kiện thay đổi bộ lọc Excel VBA

Nói cách khác là có một trình xử lý số change_filter event nào đó?

+0

Có thể trùng lặp [Chạy mã VBA tự động sau khi chạy bộ lọc] (http://stackoverflow.com/questions/12808009/run-vba-code-automatically-after-running-a-filter) –

Trả lời

7

Có.

Từ article này tôi được đăng trên một diễn đàn

1.A giả bảng được bổ sung với một SUBTOTAL công thức duy nhất trong A1 chỉ trở lại phạm vi được lọc trên bảng chính.
2. Sự kiện Worksheet_Calculate() được thêm vào giả WorkSheet, Sự kiện này sẽ kích hoạt khi cập nhật công thức SUBTOTAL khi bộ lọc bị thay đổi.

'Dummy sheet code 
Private Sub Worksheet_Calculate() 
'Dummy Sheet has recalculated 
    MsgBox "Your list has been filtered" 
End Sub 

Catering TÍNH Manual

Lưu ý rằng phương pháp này đòi hỏi trên Workbook tính được thiết lập để một trong hai Automatic (xlCalculationAutomatic trong VBA), hoặc tự động trừ bảng (xlCalculationSemiAutomatic). Nếu tính toán được đặt thành Manual (xlCalculationManual), cần thêm mã hóa để thiết lập WorkBook để chỉ WorkSheet "giả" sẽ được đặt thành Tự động tính toán, tất cả các trang tính khác đã tắt tính toán.

Có một thuộc tính WorkSheet ít được sử dụng, EnableCalculation, có thể được đặt qua Trình chỉnh sửa Visual Basic thành Đúng hoặc Sai. Cài đặt mặc định rõ ràng là True, nếu nó được đặt thành False thì bảng tính sẽ không tính toán.

Thuộc tính EnableCalculation không có sẵn cho menu Excel hoặc Ribbon tùy chọn - vì vậy, đây có thể là một mẹo hữu ích cho những người đang tìm cách bảo mật các mô hình Excel bằng cách cố tình giữ các trang tính chính không tính toán lại.

  1. Thêm Workbook_Open Sự kiện để đặt EnableCalculation property của tất cả các trang tính không phải là "Giả" thành Sai.
  2. Chạy Sổ làm việc theo chế độ Tính toán.
+0

Trên liên kết "bài viết" ở trên, tôi không thể tìm thấy phương thức "Worksheet_Calculate()" của bạn. Bạn có thể vui lòng cho tôi một liên kết tốt hơn hoặc giải thích tốt hơn nơi để tìm thấy nó! Cảm ơn bạn ! – iKK

+0

Cảm ơn - Tôi đã quản lý bằng cách đọc hết lần này đến lần khác :) Nó hoạt động nhưng một chút trên workarround, bạn có nghĩ vậy không? Có cách nào "sạch hơn" thực sự phát hiện các sự kiện tự động không? – iKK

+0

@skuenstler Tôi nghĩ rằng bài viết đã bị xóa - sẽ xem tôi có thể khôi phục nó hay không. Không, lý do giải pháp là cần thiết vì không có tuyến đường trực tiếp :) – brettdj

Các vấn đề liên quan