我正在尝试从具有FilterMode的表中保存过滤器,以便在完成某些工作后恢复它们。当AutoFilterDateGrouping为true时,如何为Excel表日期列保存过滤器的条件?我总是得到
error (1004) trying to read .Criteria1 or .Criteria2 values for .Operator = 7 (xlFilterValues)
使用此代码:
FilterArray(i, 1) = .Criteria1
要么FilterArray(i, 1) = .Criteria2
尝试一下:
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