2013-11-25 95 views
1

以下循環在一個數據集上像一個魅力一樣工作,但在另一個具有相同字段的數據集上工作並且給我一個錯誤。我不知道該怎麼做。任何調試指導將不勝感激。自動篩選不一致:範圍級別的方法失敗

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 

爲什麼正在一個數據這條線,但不工作另一個數據?這兩個數據實際上是相同的。只需複製並粘貼到具有不同文件名的不同文件中。

+0

您可以調試並檢查錯誤時'Debug.Print Worksheets(Itm).UsedRange.Address'的值是什麼? –

+0

錯誤發生時'Itm'的值又是多少? –

+0

@SiddharthRout Itm =「SCL_FL」。我不知道如何做debug.print ..我應該在循環中添加該行嗎? – Amatya

回答

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 
+0

我仍然收到同樣的錯誤。 :( – Amatya

+0

哦,男人!!!!非常感謝@Siddhardth Rout。你搖滾樂! – Amatya

+0

很高興能有幫助:) –