【问题标题】:Automatically adding Filter control in excel在excel中自动添加过滤器控件
【发布时间】:2014-11-11 17:29:04
【问题描述】:

我对 VBA 很陌生。 我想编写代码以在打开工作表时在所有包含数据的单元格中自动添加过滤器控件。

我创建了一个宏并使用了该代码,但它没有做任何事情。

这是我为所有列添加过滤器控件的代码:

ThisWorkbook.Sheets("my example1").Cells.Select
ThisWorkbook.Sheets("my example1").Selection.AutoFilter

感谢您的帮助

【问题讨论】:

  • 能否也添加一些示例数据?
  • 我认为AutoFilter 命令可以打开和关闭过滤器。因此,在调用它之前,请确保使用 .AutoFilterMode = False 关闭自动过滤器。
  • 另外,使用 CurrentRegion.Autofilter 而不是 Selection.Autofilter 可能会更好,因为在您的代码 sn-p 中您正在选择 工作表中的所有单元格
  • 示例数据 - 非常基本:国家:英格兰、弗雷斯、意大利经销商_成本:37853、4631、41235 零售成本:45319、5610、51065 销售:12000、0、302000 我试过 Autofiltermode = false和 currentreiong.autofilter 都不起作用。谢谢

标签: excel filter autofilter vba


【解决方案1】:

我认为您需要在过滤之前更具体地了解您选择的内容, 例如

ThisWorkbook.Sheets("my example1").Range("A1:Z1")

或整个顶行:

ThisWorkbook.Sheets("my example1").Range("1:1")

并且,如上所述,检查自动过滤器是否关闭:

If ActiveSheet.FilterMode = True Then ActiveSheet.ShowAllData

【讨论】:

    【解决方案2】:

    我最终将过滤器代码放入 sheet_change 事件中。

    Private Sub Worksheet_Change(ByVal Target As Range)

    Application.ScreenUpdating = False
    
    Sheets("YTD Detail").Select
    Cells.Select
    Selection.AutoFilter
    Range("A1").Select
    
    Application.ScreenUpdating = True
    

    结束子

    【讨论】:

      猜你喜欢
      • 2010-12-16
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-16
      • 1970-01-01
      相关资源
      最近更新 更多