Range.Find不能一直工作

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

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.当我重新启动工作簿,有时它仍然不能工作,有时它会被修复。 我不知道为什么会发生这种情况。 我甚至不能重现错误。 我怀疑这是因为我正在寻找的文本的单元格是一个合并的单元格。 这可能是原因吗? 它仍然不能解释为什么有时它有效,有时它不会。

我正在使用。select只是为了testing,看看它是否工作。

问:如何确保Range.Find每次都能正常工作? (假设文本的单元格将始终存在)

你可以testingRange是否为Nothing。 当范围什么都不是,那意味着没有发现。 而且你不能select任何东西。

 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