以下代码在10分钟前生效,现在出现错误1004:Range类的Autofilter方法失败。知道为什么吗?我想基于字母J过滤C列-因此仅过滤以J开头的值。之后,我想删除隐藏的行,但这似乎不起作用。请帮助
Option Explicit
Dim ws As Worksheet
Dim filterarray As Variant
Dim findarray As Variant
Dim MyLastRow1 As Long, i As Long, j As Long, k As Long
Sub test23()
Set ws = ThisWorkbook.Worksheets("T&E Report")
MyLastRow1 = Range("C100000").End(xlUp).Row
findarray = Array("J")
ReDim filterarray(0 To 0)
j = 0
For k = 0 To UBound(findarray)
For i = 2 To MyLastRow1
If InStr(ws.Cells(i, 3).Value, findarray(k)) > 0 Then
filterarray(j) = ws.Cells(i, 3).Value
j = j + 1
ReDim Preserve filterarray(0 To j)
End If
Next i
Next k
ws.Range("$C$1:$C$" & MyLastRow1).AutoFilter Field:=3, Criteria1:=Array(filterarray), Operator:=xlFilterValues
End sub
答案 0 :(得分:1)
您将要过滤的数据范围设置为仅一列(“ C”),但要求自动过滤器根据该范围的第3列设置过滤器(因此应为“ E”列)
由于如果要过滤的范围不包含“ E”列,则会出现1004运行时错误。但是,如果您已经激活了包含“ E”列的自动过滤器(这意味着您在E列上可见此三角形按钮),则不会发出运行时错误-也许这就是代码在10分钟前起作用的原因。