保存表格日期列过滤条件

问题描述 投票:0回答:1

我正在尝试从具有FilterMode的表中保存过滤器,以便在完成某些工作后恢复它们。当AutoFilterDateGroupingtrue时,如何为Excel表日期列保存过滤器的条件?我总是得到

error (1004) trying to read .Criteria1 or .Criteria2 values for .Operator = 7 (xlFilterValues)

使用此代码:

FilterArray(i, 1) = .Criteria1要么FilterArray(i, 1) = .Criteria2

excel vba autofilter
1个回答
0
投票

尝试一下:

Sub ReDoAutoFilter()
Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String
Dim col As Integer

Set w = ActiveSheet

' Capture AutoFilter settings
With w.AutoFilter
    currentFiltRange = .Range.Address
    With .Filters
        ReDim filterArray(1 To .Count, 1 To 3)
        For f = 1 To .Count
            With .Item(f)
                If .On Then
                    filterArray(f, 1) = .Criteria1
                    If .Operator Then
                        filterArray(f, 2) = .Operator
                        filterArray(f, 3) = .Criteria2
                    End If
                End If
            End With
        Next f
    End With
End With
w.AutoFilterMode = False

' Code here

' Restore Filter settings
For col = 1 To UBound(filterArray(), 1)
    If Not IsEmpty(filterArray(col, 1)) Then
        If filterArray(col, 2) Then
            w.Range(currentFiltRange).AutoFilter field:=col, _
            Criteria1:=filterArray(col, 1), _
            Operator:=filterArray(col, 2), _
            Criteria2:=filterArray(col, 3)
        Else
            w.Range(currentFiltRange).AutoFilter field:=col, _
            Criteria1:=filterArray(col, 1)
        End If
    End If
Next col
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.