gpt4 book ai didi

vba - 可以将 AutoFilter 作为事件捕获吗?

转载 作者:行者123 更新时间:2023-12-04 21:35:25 26 4
gpt4 key购买 nike

我正在尝试在报告中向用户显示过滤器列。 Excel 给出了一个不同的图标,但没有。列最好用另一种颜色(如蓝色)为列着色。

我在 Is there a way to see which filters are active in Excel, other than just the funnel icons? 找到了代码

  • 它对我有用,但是如何在没有任何按钮的情况下启动此代码
  • SheetChange 和选择更改不起作用。

  • 代码
    Sub test()
    Call markFilter(ActiveSheet)
    End Sub


    Sub markFilter(wks As Worksheet)

    Dim lFilCol As Long

    With wks
    If .AutoFilterMode Then
    For lFilCol = 1 To .AutoFilter.Filters.Count

    '/ If filter is applied then mark the header as bold and font color as red
    If .AutoFilter.Filters(lFilCol).On Then
    .AutoFilter.Range.Columns(lFilCol).Cells(1, 1).Font.Color = vbRed
    .AutoFilter.Range.Columns(lFilCol).Cells(1, 1).Font.Bold = True
    Else
    '/ No Filter. Column header font normal and black.
    .AutoFilter.Range.Columns(lFilCol).Cells(1, 1).Font.Color = vbBlack
    .AutoFilter.Range.Columns(lFilCol).Cells(1, 1).Font.Bold = False
    End If
    Next
    Else
    '/ No Filter at all. Column header font normal and black.
    .UsedRange.Rows(1).Font.Color = vbBlack
    .UsedRange.Rows(1).Font.Bold = False
    End If
    End With
    End Sub

    最佳答案

    我将使用您在帖子中提到的答案中使用的相同示例。我这样回答。 :)

    excel中没有过滤器更改事件。我将使用的一种解决方法是捕获工作表的计算方法或更好的工作簿。

    因此,在带有过滤器的工作表中添加如下虚拟公式:=SUBTOTAL(3,Sheet2!$A$1:$A$100)这仅计算可见单元格。但这取决于你。随意使用任何响应过滤器变化的公式。

    enter image description here

    之后,转到工作簿的代码并添加以下内容:

    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
    Call markFilter(Sh)
    MsgBox "Filter changed"
    End Sub

    繁荣。现在您正在捕获过滤器更改事件,它将通过触发 vba 代码来更新过滤的列。

    备注 markFilter来自 answer你提到的。

    关于vba - 可以将 AutoFilter 作为事件捕获吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39260841/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com