我有一个代码,可以使用自动文件管理器从一张纸搜索并复制到另一张纸。我在下面包含了我的代码。我的问题是,早些时候(2 周前(,代码按预期运行良好,我已经测试了代码很多次并且没有错误。突然,当我运行代码时出现运行时错误 91,错误似乎与以下行有关:
.AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")
我已经尝试了.AutoFilter=False
,错误处理以及工作表激活。但是我仍然收到相同的运行时错误。有人可以帮助我找出我的代码出了什么问题吗?任何帮助都非常感谢。
Sub search()
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("Master")
Set ws2 = Worksheets("Fruit")
'Worksheets("Fruit").Activate
With ws1
'.AutoFilterMode = False
.Range("B7").AutoFilter
.Range("B7").AutoFilter field:=17, Criteria1:="Rotten"
'On Error Resume Next
.AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")
'.AutoFilterMode = False
End With
With ws2.Range("B10:Y1400").Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
MsgBox ("Search done.")
End Sub
试试这个。
-
将
field:=17
替换为field:=1
。您的范围是单列,因此字段应1
。 -
同时更换行
.AutoFilter.Range.Offset(1, 0).Copy Destination:=ws2.Range("B10")
有了这个
Dim rng As Range
Set rng = .AutoFilter.Range.Offset(1, 0)
'~~> Checking if there is something that was filtered
If Not rng Is Nothing Then
rng.Copy Destination:=ws2.Range("B10")
Else
MsgBox "Nothing found"
End If
现在会发生什么?
Dim ws1, ws2 As Worksheet
只有ws2
被宣布为Worksheet
。ws1
被宣布为Variant
。将其更改为
Dim ws1 As Worksheet, ws2 As Worksheet