VBA:在列过滤器上触发宏

时间:2013-04-09 14:09:45

标签: excel-vba vba excel

有没有办法可以在excel中的列过滤器上触发宏功能?

请帮忙

感谢。

1 个答案:

答案 0 :(得分:11)

我只是在考虑是否可以发布这个答案。我想有些人不会喜欢它,因为通过旁路解决方案的介绍不是直接回答。但是我认为我可以将这个想法表现为我们在问题中没有所有项目假设。

让我们同意 - 我们都知道在更改过滤后没有事件会发生。但是,我看到了一个选项。

更改过滤器可能会触发Worksheet_Calculate事件(不是Worksheet_Change)。如果您的工作表中有任何单个公式,那么每次我们使用鼠标更改过滤条件时,我们都会触发该事件。

步骤1。在工作表中放置任何单个公式,例如在单元格ZZ1中= ZZ2

第2步。我假设我们的数据范围从Range(A1)开始,我们在第一行有标题(见图)。我还假设那个区域下面没有任何东西。

enter image description here

第3步。将以下解决方案放在Sheet1模块中。

Private Sub Worksheet_Calculate()

If ActiveSheet.Name = "Sheet1" Then
    If Cells(Rows.Count, 1).End(xlUp).Row = 1 Then
        MsgBox "No data available"
    Else
        MsgBox "There are filtering results"
    End If
End If
End Sub

第4步。使用过滤器会触发该事件并导致以下情况:

enter image description here enter image description here

我希望有人会喜欢它并且可以使用它。即使它只是一个旁路的想法。