当将表单变量设置为用户表单的新实例时出现运行时错误91

18 浏览
0 Comments

当将表单变量设置为用户表单的新实例时出现运行时错误91

我有一个工作表,想在Range("A:A")中搜索Range("M" & i)的值。然而,当我尝试运行这段代码时,它返回一个错误:“运行时错误 '91':对象变量或With块未设置。当我点击调试时,它在 SearchIn = Range("A:A")这一行找到一个错误。我已经在互联网和这个网站上搜索了一些内容,但仍然无法解决这个问题。有人有线索吗?

Sub Find_Replace()
Dim i As Integer
Dim SearchIn As Range
Dim SearchedObject As Range
Dim FinalCell As Range
Dim SumCell As Range
i = 5
Set SearchIn = Range("A1:A740")
Set StartSearch = Range("A" & i)
Set FinalCell = Range("N" & i)
Do While i <= 740
Set SearchedObject = SearchIn.Find(What:="M" & i, After:=StartSearch, LookIn:=xlValues,          LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If SearchedObject.Value = Range("M" & i).Value Then FinalCell.Value = FinalCell.Value + SearchedObject.Offset(0, 5).Value
Loop
End Sub

0
0 Comments

问题出现的原因是在代码中没有使用SET关键字来分配对象。

解决方法是在分配对象时使用SET关键字,例如在代码的以下几行中:

Set SearchIn = Range("A1:A740")
Set StartSearch = Range("A" & i)
Set FinalCell = Range("N" & i)

此外,建议使用完整路径来指定搜索范围,否则搜索将始终发生在活动工作表上。例如:

Set SearchIn = Sheets("Sheet1").Range("A1:A740")

同样适用于其他类似的操作。

0