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