我有一小段代码可以重置应用于工作表上列的过滤器。
Sub ResetFilters()
If ActiveSheet.FilterMode Then
Cells.AutoFilter
End If
End Sub
当我单击命令按钮运行宏时,它可以工作,但重置过滤器'命令按钮消失,我在工作表上的其余部分都堆叠在工作表的左上角。他们都不会随着细胞的移动或大小移动。设置为他们的财产,但他们仍然移动......
当我进入设计模式时,重置过滤器'按钮重新出现在正确的位置......我很困惑 - 有没有人有任何可以提供的建议?
编辑(14/06 16:41) - 我发现如果我按升序或降序对数据进行排序,那么当我重置过滤器时,按钮会保持原样。如果我过滤掉了一些数据,它们就会移动。
编辑(14/06 17:58) - 我已经包含了我正在使用的截图,以便我的过滤需求更加清晰!我在一所学校工作,老师会用这个工具分析他们的数据。他们可以过滤任何列,根据特征或评估结果分析特定儿童的结果和进度。由于它们可以对许多列进行过滤或排序,因此很难在不丢失列的情况下重置数据。我想添加一个'重置'按钮使这项工作更容易。 (我现在可能会将这些添加到功能区,因为我刚刚为此工具创建了一个定制的学校选项卡,这样就可以解除移动按钮的问题。但是,如果有更好的重置滤镜的方法,我很乐意学习它。)
Screenshot of the data analysis tool
非常感谢。
答案 0 :(得分:0)
不要使用ActiveSheet
。它容易出现多重错误
请改用Dim ws As Worksheet: Set ws = Sheets("Sheet1")
(将Sheet1更改为您正在使用的实际工作表名称)
如果您愿意删除字面上的所有过滤器(而且不仅仅是在特定范围内),这样做
Private Sub clearfilters()
Dim ws As Worksheet: Set ws = Sheets("Sheet1")
ws.Cells.AutoFilter
End Sub