自动过滤范围类失败

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

我得到了

运行时错误'1004',Range类的自动过滤方法失败。

在执行

Sheets("InitialFourColumns Check").Rows.AutoFilter

我尝试了Stack Overflow中给出的解决方案。

Sub D_CopyValidData()
'Filter and move valid data
'Move Subcription data
Sheets("InitialFourColumns Check").Select
'ActiveSheet.AutoFilterMode = False
usedRowsSubCheck1 = Sheets("InitialFourColumns Check").Range("A10000").End(xlUp).Row
'Selection.AutoFilter
Sheets("InitialFourColumns Check").Rows.AutoFilter
'Sheets("InitialFourColumns Check").AutoFilterMode = False
'Sheets("InitialFourColumns Check").Range("A10000").End(xlUp).Rows.AutoFilter
ActiveSheet.Range("$A$1:$AA" & usedRowsSubCheck1).AutoFilter Field:=11, Criteria1:="TRUE"
usedRowsSubCheck2 = Sheets("InitialFourColumns Check").Range("A10000").End(xlUp).Row

If usedRowsSubCheck2 > 1 Then
    Range("A2:Y" & usedRowsSubCheck2).Copy
    Sheets("Valid Data").Select
    Range("B2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Sheets("InitialFourColumns Check").Rows.AutoFilter
Else
    Sheets("InitialFourColumns Check").Rows.AutoFilter
End If

enter image description here

excel vba excel-vba macros
1个回答
0
投票

试试这个,我想应该可以。

Option Explicit
Sub D_CopyValidData()

    With ThisWorkbook.Sheets("InitialFourColumns Check")
        Dim usedRowsSubCheck1 As Long
        usedRowsSubCheck1 = .Cells(.Rows.Count, 1).End(xlUp).Row

        If .AutoFilterMode Then .AutoFilterMode = False
        .Range("A1", "AA" & usedRowsSubCheck1).AutoFilter 11, "TRUE"

        usedRowsSubCheck1 = .Cells(.Rows.Count, 1).End(xlUp).Row

        If usedRowsSubCheck1 > 1 Then
            .Range("A2:Y" & usedRowsSubCheck1).Copy
            ThisWorkbook.Sheets("Valid Data").Range("B2").PasteSpecial xlPasteValues
        End If

        .AutoFilterMode = False

    End With

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.