用于刷新格式的vba代码作为excel中的表过滤器

时间:2015-03-14 06:29:47

标签: vba

我有一个带有过滤器的表格格式,我根据列D3中的值为非空白的单元格过滤所有表格。现在,我正在尝试根据单元格G1上列表的任何更改自动生成过滤器。

我尝试使用数据透视表,但这不起作用,因为这种类型的表不是数据透视表(格式为表格)的一部分。

可用于此类排序的正确代码是什么。 该表是Sheet 1,表名为(PT)。

2 个答案:

答案 0 :(得分:0)

仅当G1中的值发生变化时,才会激活以下代码。

使用 Alt + F11 打开VBE,打开“Sheet 1”模块并粘贴给定代码。

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo errH
    If Not Intersect(Target, Me.Range("G1")) Is Nothing Then
        Application.EnableEvents = False

        'Put here things that you want to be done if G1 value is changed
        'For example:
        MsgBox "G1 was changed."

        Application.EnableEvents = True
    End If
    Exit Sub
errH:
    MsgBox ("Error number: " & Err.Number & ". Description: " & Err.Description)
    Application.EnableEvents = True
End Sub

您可以测试它 - 只需更改G1值,您就会看到它有效。

但是,我不明白您对要过滤的内容的解释。但不管它是什么,只需将代码放在我标识的位置并删除MsgBox

答案 1 :(得分:0)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim criteriaparameter As String
Dim criteriavalue As String
    On Error GoTo errH
    If Not Intersect(Target, Me.Range("G1")) Is Nothing Then
        Application.EnableEvents = False

        criteriaparameter = ActiveSheet.Range("J1").Value
        criteriavalue = ">=" & criteriaparameter

        ActiveSheet.Range("$A$8:$L$8").AutoFilter Field:=10, Criteria1:=criteriavalue, _
        Operator:=xlAnd


        Application.EnableEvents = True
    End If
    Exit Sub
errH:
    MsgBox ("Error number: " & Err.Number & ". Description: " & Err.Description)
    Application.EnableEvents = True
End Sub