运行时错误1004-范围类别的自动筛选方法失败

时间:2019-05-29 18:27:58

标签: excel vba

运行vba时,我得到

  

运行时错误'1004; Range Class的AutoFilter方法失败

我尝试按照上一答案中的建议将工作表更改为工作表1,但它不起作用

Sub Split_Data_in_workbooks()

Application.ScreenUpdating = False

Dim data_sh As Worksheet
Set data_sh = ThisWorkbook.Sheets("Working File")

Dim setting_Sh As Worksheet
Set setting_Sh = ThisWorkbook.Sheets("Setting")

Dim nwb As Workbook
Dim nsh As Worksheet

''''''Get unique districts


setting_Sh.Range("A:A").Clear
data_sh.AutoFilterMode = False
data_sh.Range("b:b").Copy setting_Sh.Range("A1")

setting_Sh.Range("A:A").RemoveDuplicates 1, xlYes

Dim I As Integer

For I = 2 To Application.CountA(setting_Sh.Range("A:A"))

   data_sh.UsedRange.AutoFilter 2, setting_Sh.Range("A" & I).Value

   Set nwb = Workbooks.Add
   Set nsh = nwb.Sheets(1)

   data_sh.UsedRange.SpecialCells(xlCellTypeVisible).Copy nsh.Range("A1")

   nwb.SaveAs setting_Sh.Range("H6").Value & "/" & setting_Sh.Range("A" & 
I).Value & ".xlsx"
   nwb.Close False
   data_sh.AutoFilterMode = False
Next I

setting_Sh.Range("A:A").Clear

MsgBox "Done"

End Sub

该代码应该获取每个地区的信息(可能是多行),这些信息来自一个工作簿,并将其保存到单独的工作簿中,并将它们保存在指定的文件中。代码不会通过此行运行

data_sh.UsedRange.AutoFilter 2, setting_Sh.Range("A" & I).Value

1 个答案:

答案 0 :(得分:0)

您可能正在将错误的参数传递给data_sh.UsedRange.AutoFilter方法。第一个参数不能大于字段数-尝试使用1而不是2。documentation中第二个参数的说明:

  

条件(字符串;例如,“ 101”)。使用“ =”查找空白   字段,使用“ <>”查找非空白字段,并使用““> <”选择(无数据)   数据类型中的字段。如果省略此参数,则条件为   所有。如果Operator是xlTop10Items,则Criteria1指定   项(例如“ 10”)。

尝试此行,然后使用其他参数的值进行播放。确保您知道要传递给函数的参数值:

data_sh.UsedRange.AutoFilter 1