微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么对于长度超过 1 个字符的搜索字符串,cells.find 会抛出运行时错误 91?

如何解决为什么对于长度超过 1 个字符的搜索字符串,cells.find 会抛出运行时错误 91?

我正在尝试解决一个迄今为止我在 Excel VBA 中没有遇到过的问题。 我在一本工作簿中有几张工作表,其中只有两张是感兴趣的 - 我们称它们为 WS1 和 WS2。两者都包含一张表格,每张表格都填充了文本和数字。现在我想要做的就是从 WS1 中取出一个单元格,然后在 WS2 中找到具有相同内容的单元格行,如下所示(摘录):

Dim temprow as Long
temprow = Worksheets("WS2").Cells.Find(Worksheets("WS1").Cells(1,1)).Row

只要 WS1 中的单元格 (1,1) 中只有一个字母或数字,此方法就有效。一旦内容变长,我就会收到运行时错误 91。接下来我尝试消除 WS1,如下所示:

Dim temprow as Long
temprow = Worksheets("WS2").Cells.Find("randomtext").Row

但是随机文本也会出现同样的问题。 “A”工作正常,“randomtext”导致运行时错误 91。 我也尝试过使用 set 命令,但也无济于事......但是可以通过 VBA 为 WS1 和 WS2 在单元格中写入内容

我有点惊讶,这种行为与我查找的字符串长度有关,好像这是某种内存错误......有人知道我还能尝试什么吗?

解决方法

您可以通过检查是否有合适的范围参考可用来消除此错误,即

Dim temprow as Long
Dim tempRng as Range
Set tempRng = Worksheets("WS2").Cells.Find(Worksheets("WS1").Cells(1,1).Value)
If Not tempRng is Nothing then
    temprow = tempRng.Row
Else
    Msgbox "Data not found!",vbInformation
End If

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。