自动过滤器不一致:范围类的方法失败

时间:2013-11-25 00:20:43

标签: excel-vba autofilter vba excel

以下循环在一个数据集上像魅力一样工作,但在另一个具有相同字段的数据集上它不起作用并给我一个错误。我没办法。任何调试指导将不胜感激。

For Each Itm In Array("SCL_FL", "FSL_SCL_FX")
                Workbooks(Original_Name).Sheets("Sheet1").Select
                Selection.Copy
                Workbooks.Add
                ActiveSheet.Name = Itm
                Sheets(Itm).Paste
                    If Itm = "SCL_FL" Then
                        Worksheets(Itm).UsedRange.AutoFilter Field:=3, Criteria1:="=SCL_FL"
                    Else
                        Worksheets(Itm).UsedRange.AutoFilter Field:=3, Criteria1:=Array("FSL", "SCL_FX"), Operator:=xlFilterValues
                    End If

Next Itm

我收到错误“范围类的自动过滤方法失败”

我在做

时遇到同样的错误
Worksheets(Itm).UsedRange.AutoFilter Field:=3, Criteria1:="SCL_FL", Operator:=xlFilterValues

为什么这一行处理一个数据而不处理另一个数据?两个数据实际上是相同的。只需复制并粘贴到具有不同文件名的不同文件中。

1 个答案:

答案 0 :(得分:1)

您收到该错误是因为您在Sheet1.Copy命令后添加了工作簿。复制命令已创建新工作簿。如果您在此之后再次添加新工作簿,usedrange自然会在上面的评论中提到$A$1

将您的代码更改为此代码即可。

Sub Run1Nov24()
    '
    '~~>Rest of your code
    '
    Dim itm
    Dim wb As Workbook
    Dim ws As Worksheet

    For Each itm In Array("SCL_FL", "FSL_SCL_FX")
        Set wb = Workbooks.Add

        Workbooks(Original_Name).Sheets("Sheet1").Copy Before:=wb.Sheets(1)

        Set ws = wb.Sheets(1)

        With ws
            .AutoFilterMode = False
            .Name = itm
            If itm = "SCL_FL" Then
                .UsedRange.AutoFilter Field:=3, Criteria1:="=SCL_FL"
            Else
                .UsedRange.AutoFilter Field:=3, Criteria1:=Array("FSL", "SCL_FX"), Operator:=xlFilterValues
            End If
         End With
      Next itm
    '
    '~~>Rest of your code
    '
End Sub