使用 Find 方法时找不到匹配项时出错

Error when match is not found when using Find method

我知道这可能有广泛的覆盖范围,我已经尝试了其中的一些,但仍然无法正常工作:

        Dim d As Range
        For Each d In orng
            Dim val As Range
            Set val = adws.Range("O2:O" & lrw).Find(d.Value, , xlValues, xlWhole).Offset(0, 26)
            
            If val Is Nothing Then
                MsgBox d.Value & " not found."
                End
            Else
                d.Offset(0, 12) = val.Value
            End If
        Next

只要函数找到一个值,代码就可以正常工作,但在第一个没有找到的值上会出错。在同一行设置 val 变量和 运行 Find 函数,我从其他论坛获得的。但这似乎根本不起作用。 Find 在找不到值时仍然会感到困惑。

提前致谢。

.Offset(0, 26) 有问题。不要将任何调用链接到 Find 调用,而是仅在 Offset 之后 确保 Find 成功。

还可以考虑使用 Val 之外的另一个变量名,因为它会影响 Val 函数。

Dim rng as Range
Set rng = adws.Range("O2:O" & lrw).Find(d.Value, , xlValues, xlWhole)
           
If rng Is Nothing Then
    MsgBox d.Value & " not found."
    End
Else
    d.Offset(0, 12).Value = rng.Offset(0, 26).Value ' Offset here since Find succeeded
End If