2015-03-11 25 views
5

Czy istnieje sposób sprawdzenia, kiedy użytkownik wprowadził zmiany w filtrze arkuszy?Filtr VBA programu Excel Zmienić moduł obsługi zdarzeń

Innymi słowy, czy istnieje jakiś uchwyt do obsługi change_filter event?

+0

Możliwy duplikat [Run kodu VBA automatycznie po uruchomieniu filtra] (http://stackoverflow.com/questions/12808009/run-vba-code-automatically-after-running-a-filter) –

Odpowiedz

7

Tak.

Od tego article napisałem na innym forum

1.A manekin Arkusz dodaje się jeden SUBTOTAL formuła w A1 skierowany z powrotem do zakresu filtrowane na głównym arkuszu.
2. Wydarzenie jest dodawane do atrapa WorkSheet, to zdarzenie jest wywoływane, gdy formuła SUBTOTAL aktualizuje się po zmianie filtru.

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

Catering dla ręcznego obliczania

Należy zauważyć, że powyższe podejście wymaga skoroszytu Obliczanie być ustawiony na automatyczny (xlCalculationAutomatic w VBA) lub Automatic (z wyjątkiem stołów xlCalculationSemiAutomatic). Jeśli obliczono wartość Ręczny (xlCalculationManual), konieczne jest dalsze kodowanie, aby ustawić WorkBook tak, aby tylko "obojętny" arkusz roboczy był ustawiony tak, aby automatycznie obliczyć, a wszystkie pozostałe arkusze mają wyłączoną Obliczenia.

Istnieje rzadko używana właściwość WorkSheet, EnableCalculation, którą można ustawić za pomocą edytora Visual Basic na wartość True lub False. Domyślnym ustawieniem jest oczywiście True, jeśli jest ustawione na False, wtedy arkusz kalkulacyjny nie będzie obliczał.

Właściwość EnableCalculation nie jest dostępna dla zwykłych opcji menu Excel lub opcji wstążki - tak więc może to być przydatna sztuczka dla osób, które chcą zabezpieczyć modele Excela, celowo przechowując arkusze kluczowe przed ponowną kalkulacją.

  1. Dodaj wydarzenie Workbook_Open Zdarzenie, aby ustawić EnableCalculation property wszystkich arkuszy innych niż "Dummy" na False.
  2. Uruchomienie skoroszytu w trybie Obliczanie.
+0

Z "artykuł" link powyżej, nie mogę znaleźć metody "Worksheet_Calculate()". Czy możesz dać mi lepszy link lub wyjaśnić, gdzie go znaleźć! Dziękuję Ci ! – iKK

+0

Dzięki - udało mi się czytać raz po raz :) Działa, ale jest trochę na planie, nie sądzisz? Czy istnieje "bardziej czysty" sposób, który naprawdę wykrywa zdarzenia związane z autofiltrem? – iKK

+0

@skuenstler Myślę, że artykuł został usunięty - zobaczy, czy mogę go przywrócić. Nie, powodem tego obejścia jest to, że nie ma bezpośredniej drogi :) – brettdj

Powiązane problemy