2

我有一个在任何单元格更改时运行的宏,我只想对显示的单元格求和,因此如果有人过滤工作表,宏将运行并仅对可见单元格求和。

我找到了这个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

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

为什么它不起作用?

4

2 回答 2

2

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

  1. 第二个虚拟工作表添加了一个SUBTOTAL公式,A1指向主工作表上被过滤的范围(即您要在其上捕获过滤器的范围)。
  2. 一个Worksheet_Calculate()事件被添加到虚拟SUBTOTAL工作表中,当您的主工作表上的过滤器更改时公式更新时触发此事件。
于 2012-11-12T12:16:41.090 回答
0

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

于 2012-11-12T11:45:12.103 回答