Excel VBA-代码突然收到运行时错误91(自动筛选)



我有一个代码,可以使用自动文件管理器从一张纸搜索并复制到另一张纸。我在下面包含了我的代码。我的问题是,早些时候(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

试试这个。

  1. field:=17替换为field:=1。您的范围是单列,因此字段应1

  2. 同时更换行.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

现在会发生什么?

  1. Dim ws1, ws2 As Worksheet

只有ws2被宣布为Worksheetws1被宣布为Variant。将其更改为

Dim ws1 As Worksheet, ws2 As Worksheet

相关内容

最新更新