首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行筛选器后自动运行VBA代码

运行筛选器后自动运行VBA代码
EN

Stack Overflow用户
提问于 2012-10-10 04:36:25
回答 3查看 12.1K关注 0票数 3

我已经编写了一个代码,根据员工的资质对他们进行分类。为了剔除具有不需要的资质的员工,我对标题为其资质类别的每个列应用了一个过滤器。

我编写VBA代码的目的是为了便于定位,使重复的名称和限定不可见。但是,我无法让代码自动运行。

目前,让代码运行的唯一方法是将其设置为

私有子目标(ByVal Worksheet_Change As Range),然后更改任意单元格的值。

我在以下位置找到了我认为正确的解决方案:

http://www.ozgrid.com/forum/showthread.php?t=72860

但是我不能理解它。

在筛选器运行后,有没有一种方法可以运行此代码,而不必选择和取消选择单元格?

EN

回答 3

Stack Overflow用户

发布于 2012-10-10 08:00:07

我的文章Trapping a change to a filtered list with VBA中的要点

这篇文章有更多的细节和一个样本文件,要点总结如下

  1. 添加“虚拟”WorkSheet时,A1中只有一个SUBTOTAL公式,指向主工作表上要筛选的区域。
  2. Worksheet_Calculate()事件添加到“虚拟”WorkSheet,当更改筛选器时SUBTOTAL公式更新时,将触发此事件。

如果希望以Manual身份运行工作簿计算,则需要下面两个设置

  1. 添加Workbook_Open事件以将除"Dummy“之外的所有工作表的EnableCalculation属性设置为False。
  2. 在计算模式下运行工作簿
票数 3
EN

Stack Overflow用户

发布于 2012-10-10 05:52:41

您提到的ozgrid code告诉您,您可以将代码放在worksheet_calculate事件中(在工作表模块中),只要您有在更改自动筛选器时重新计算的内容。这可以是一个可以隐藏在工作表中的小计公式,例如=subtotal(3,A:A)

票数 1
EN

Stack Overflow用户

发布于 2014-10-01 02:54:16

仍然需要调查,但看起来图表计算事件在Calculation = xlCalculationManual时被触发。至少可以在我的Excel2007上运行。因此,步骤如下:

  • 创建一个图表(在Sheet1上显示为"Chart 1“),该图表实际使用您的任何表列中的数据,当您更改filter
  • 创建一个新类时,检查它是否更新其图片,例如clsChartEvents:

公共子图表作为图表私有子Chart_Calculate() Stop End Sub

  • 将此代码添加到某个模块或类:

SubscribeToChartEvents

  • change chartEvents as new ChartEvents‘创建一个模块范围的变量子表集合chartEvents.Chart =Sheet1.ChartObjects(“Chart_Calculate()

1").Chart end sub

  • 执行一个筛选器,您应该会出现在子表中
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12808009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档