每次启用过滤器时运行宏

时间:2012-11-12 11:12:52

标签: excel excel-vba vba

我有一个宏,当任何单元格被更改时运行,并且我只想对所显示的单元格求和,所以如果有人过滤该表格,宏将运行并且只对可见单元格求和。

我找到了SpecialCells(xlCellTypeVisible)功能,但我无法使其正常工作。

我对代码的想法是这样的:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Rcells As Range
    Dim sum as Double
    sum = 0
    For each Rcells In Range("A5:A65536").SpecialCells(xlCellTypeVisible)
    sum = sum + Rcells.Value
    Next Rcells
    Sheets("aSheet").Range("B1").Value = sum
End Sub

我设法只对可见单元格求和,但它不会自动运行。

为什么不起作用?

2 个答案:

答案 0 :(得分:2)

我的文章Trapping a change to a filtered list with VBA中的两个关键步骤,其中包括详细说明和示例文件:

  1. 第二个虚拟工作表在SUBTOTAL中添加了一个A1公式,指向主表上要过滤的范围(即您要捕获的范围)过滤器)。
  2. 虚拟工作表中添加了Worksheet_Calculate()事件,当主页上的更改过滤器时SUBTOTAL公式更新时,会触发此事件。

答案 1 :(得分:0)

查看小计功能。 enter = subtotal( 然后点击fx了解它是如何工作的。