Range.Find并不是一直都在工作

时间:2017-07-20 09:33:40

标签: excel excel-vba vba

我需要根据具有特定文本的单元格的位置来获取范围。以下代码行就是这样做的。

Sub test()
Dim rng As Range
Dim ws2 As Worksheet
Set ws2 = Sheets("Sheet2")
Set rng = ws2.Cells.Find("asd", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Offset(3)
rng.Select
End Sub

问题在于,有时由于某种未知原因,Range.Find只是不想工作并发出运行时错误91。 当我重新启动工作簿时,有时它仍然无法工作,有时它将被修复。 我不知道为什么会这样。我甚至不能尝试重现错误。 我怀疑这是因为我正在寻找的文本的单元格是一个合并的单元格。这可能是原因吗? 它仍然无法解释为什么有时它会起作用,有时它也不会。

我正在使用。选择仅测试并查看它是否有效。

问题:如何确保Range.Find每次都有效? (假设带有文本的单元格将始终存在)

1 个答案:

答案 0 :(得分:2)

您可以测试Range是否为Nothing。范围无效时,表示没有找到任何内容。而你无法选择任何东西。

Sub test()
    Dim rng As Range
    Dim ws2 As Worksheet
    Set ws2 = Sheets("Sheet2")
    Set rng = ws2.Cells.Find("asd", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
    If Not rng  Is Nothing Then 
    rng.Offset(3).Select
    else
    MsgBox("Nothing Found")
    End if 
    End Sub