Excel 自动筛选不一致:范围类的方法失败
下面的循环在一个数据集上像一个符咒一样工作,但在另一个具有相同字段的数据集上它不工作,并给我一个错误。我束手无策。任何调试指导都将不胜感激Excel 自动筛选不一致:范围类的方法失败,excel,autofilter,vba,Excel,Autofilter,Vba,下面的循环在一个数据集上像一个符咒一样工作,但在另一个具有相同字段的数据集上它不工作,并给我一个错误。我束手无策。任何调试指导都将不胜感激 For Each Itm In Array("SCL_FL", "FSL_SCL_FX") Workbooks(Original_Name).Sheets("Sheet1").Select Selection.Copy Workbooks.Add
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
我收到错误“range类的自动筛选方法失败”
当我这样做的时候,我也会犯同样的错误
Worksheets(Itm).UsedRange.AutoFilter Field:=3, Criteria1:="SCL_FL", Operator:=xlFilterValues
为什么这一行处理一个数据而不处理另一个数据?这两个数据实际上是相同的。只需复制并粘贴到具有不同文件名的不同文件中。由于在
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
出现此错误是因为您在
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
您能否调试并检查出错时
debug.Print Worksheets(Itm).UsedRange.Address
的值是多少?出错时Itm
的值也是多少。@SiddharthRout Itm=“SCL_FL”。我不知道如何进行调试。打印。。我应该在循环中添加该行吗?是的。在工作表(itm)之后添加Debug.print itm
。粘贴和Debug.print工作表(itm)。使用drange.Address
两次。在IF
和Else
@SiddharthRout中,我做了ctrlG,下面的框显示SCL\u FL$A$1您可以调试并检查debug.Print Worksheets(Itm)的值是多少。出错时使用drange.Address
?出错时Itm
的值也是多少。@SiddharthRout Itm=“SCL\u FL”。我不知道如何进行调试。打印。。我应该在循环中添加该行吗?是的。在工作表(itm)之后添加Debug.print itm
。粘贴和Debug.print工作表(itm)。使用drange.Address
两次。在IF
和Else
@SiddharthRout中,我做了ctrlG,下面的框中写着SCL_FL$A$1帮助:)很高兴帮助:)