VBA错误对象未设置 - 从字符串中查找单元格

9 浏览
0 Comments

VBA错误对象未设置 - 从字符串中查找单元格

我正在使用这段代码在宏中查找工作表中的内容:

Selection.Find(What:=email, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False, SearchFormat:=False).Activate

我如何判断它是否找到了内容?

0
0 Comments

VBA错误对象未设置-从字符串中查找单元格

当使用VBA代码在Excel中查找某个字符串对应的单元格时,有时会遇到“Error Object Not Set”的错误。这个问题的原因是在使用Find函数时,如果没有找到对应的字符串,返回的是一个Nothing值,而不是null

解决这个问题的方法是,在使用Find函数后,先判断返回的结果是否为Nothing。如果不是Nothing,则表示找到了对应的单元格,可以继续进行后续的操作;如果是Nothing,则表示没有找到对应的单元格,需要进行异常处理。

下面是一个示例代码:

With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, lookin:=xlValues)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

在这个示例中,首先使用Find函数在“A1:A500”范围内查找值为2的单元格。如果找到了对应的单元格,将其值设置为5,并继续使用FindNext函数查找下一个符合条件的单元格。直到再次找到之前的单元格,或者找不到符合条件的单元格为止。

通过在使用Find函数后判断返回的结果是否为Nothing,可以避免出现“Error Object Not Set”的错误,并正确处理找不到对应单元格的情况。

0
0 Comments

问题原因:出现此问题的原因是在代码中使用了一个未设置对象的变量rng,而在后续的代码中对该变量进行了操作,导致出现错误。

解决方法:要解决这个问题,需要在使用rng变量之前先确保它已经被正确地设置。可以通过使用Find方法来查找指定的单元格,并将结果赋给rng变量。然后,通过检查rng变量是否为Nothing来判断是否找到了指定的单元格。如果rng变量不为Nothing,则表示找到了单元格,可以继续对其进行操作。否则,如果rng变量为Nothing,则表示未找到指定的单元格,需要进行相应的处理。

以下是修改后的代码示例:

Dim rng As Range
Dim email As String
email = "example@email.com" '设置要查找的字符串
Set rng = ActiveSheet.Cells.Find(What:=email, LookIn:=xlFormulas, LookAt:=xlPart, _
    SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rng Is Nothing Then
    rng.Activate
End If

通过以上修改后的代码,我们可以确保在使用rng变量之前,先通过Find方法找到了指定的单元格并将结果赋给rng变量。然后,通过检查rng变量是否为Nothing来判断是否找到了指定的单元格,从而避免了出现VBA Error Object Not Set的问题。

0
0 Comments

问题原因:出现VBA Error Object Not Set的原因是由于在使用Selection.Find方法时没有找到指定的单元格。

解决方法:可以通过检查Activecell.Value来确定是否找到了所需的结果。

具体代码如下:

Dim searchValue As String
Dim resultCell As Range
searchValue = "要查找的值"
Set resultCell = Selection.Find(What:=searchValue, LookIn:=xlValues, LookAt:=xlWhole)
If Not resultCell Is Nothing Then
    '找到了指定的单元格
    MsgBox "找到了结果:" & resultCell.Value
Else
    '没有找到指定的单元格
    MsgBox "未找到结果"
End If

以上代码中,首先定义了一个searchValue变量,用于存储要查找的值。然后使用Selection.Find方法来查找该值,将结果存储在resultCell变量中。

接下来,通过判断resultCell是否为Nothing来确定是否找到了所需的结果。如果找到了结果,则弹出一个消息框显示找到的单元格的值。如果没有找到结果,则弹出一个消息框提示未找到。

通过使用上述代码,可以避免出现VBA Error Object Not Set的错误,并能够准确地找到指定的单元格。

0