运行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
答案 0 :(得分:0)
您可能正在将错误的参数传递给data_sh.UsedRange.AutoFilter
方法。第一个参数不能大于字段数-尝试使用1而不是2。documentation中第二个参数的说明:
条件(字符串;例如,“ 101”)。使用“ =”查找空白 字段,使用“ <>”查找非空白字段,并使用““> <”选择(无数据) 数据类型中的字段。如果省略此参数,则条件为 所有。如果Operator是xlTop10Items,则Criteria1指定 项(例如“ 10”)。
尝试此行,然后使用其他参数的值进行播放。确保您知道要传递给函数的参数值:
data_sh.UsedRange.AutoFilter 1