Run VBA code automatically after running a filter

后端 未结 3 1891
北荒
北荒 2021-01-14 11:27

I\'ve got a code written that categorizes employees along with their qualifications. In order to weed out employees with unwanted qualifications I have applied a filter to e

相关标签:
3条回答
  • 2021-01-14 11:58

    The ozgrid code you mentioned tells you that you can put your code in a worksheet_calculate event (in the worksheet module), as long as you have something that will recalculate when you change your autofilter. This something can be a subtotal formula that you can hide in your worksheet, e.g. =subtotal(3,A:A)

    0 讨论(0)
  • 2021-01-14 12:02

    Still need to investigate but looks like Chart Calculate event is triggered when Calculation = xlCalculationManual. At least works on my Excel 2007. So the steps are:

    • create a chart (saying "Chart 1" on Sheet1) which actually uses data from any of your table column
    • check that it updates its picture when you change the filter
    • create a new class e.g. clsChartEvents:

      Public WithEvents Chart As Chart
      Private Sub Chart_Calculate()
        Stop
      End sub
      
    • add this code to some module or class:

      Private chartEvents as new ChartEvents 'create a module-scope variable
      sub SubscribeToChartEvents
        set chartEvents.Chart = Sheet1.ChartObjects("Chart 1").Chart
      end sub
      
    • execute SubscribeToChartEvents
    • change a filter and you should appear in Sub Chart_Calculate()
    0 讨论(0)
  • 2021-01-14 12:05

    The key points from my article Trapping a change to a filtered list with VBA

    There is more detail and a sample file with the article, the key points are summarised below

    1. A "dummy" WorkSheet is added with a single SUBTOTAL formula in A1 pointing back to the range being filtered on the main sheet.
    2. A Worksheet_Calculate() Event is added to the "dummy" WorkSheet, this Event fires when the SUBTOTAL formula updates when the filter is changed.

    The next two setps are needed if it is desired to run the Workbook Calculation as Manual

    1. Add a Workbook_Open Event to set the EnableCalculation property of all sheets other than "Dummy" to False.
    2. Run the Workbook in Calculation mode
    0 讨论(0)
提交回复
热议问题