vba搜索功能

时间:2011-07-15 19:15:15

标签: vba excel-vba excel

我正在编写一个函数,在工作表中查找字符串,并使用找到的短语的位置设置范围变量。当我尝试检查.find是否返回一个值时,我收到一个错误:

Public Function ExceptionSearch(ByVal eString As String) As Boolean

Dim pRange As Range
Dim bDT As Boolean
Dim bSVR As Boolean
Dim bMB As Boolean

Workbooks("test.xlsx").Worksheets("worksheet").Activate

With Worksheets("worksheet").Range("a1:a5000")

Set pRange = .Find(eString, LookIn:=xlValues)

If pRange <> "" Then
bDT = True
Else
bDT = False
End If

End With


ExceptionSearch = bDT

End Function

我一直收到错误“运行时错误'91':对象变量或没有设置块变量”

这可能是一个简单的问题,但我无法理解。

2 个答案:

答案 0 :(得分:2)

在检查空白字符串的值之前,您应该检查以确保pRange存在。

Set pRange = .Find(eString, LookIn:=xlValues)

If Not pRange Is Nothing Then
    ' string check here 
End If 

答案 1 :(得分:1)

由于.Find返回一个对象,如果找不到该值,则等于Nothing。将其更改为:

If pRange Is Nothing Then
    bDT = True
Else
    bDT = False
End If

或者真的,您可以完全消除if/else阻止,只需ExceptionSearch=pRange Is Nothing pRange Is Nothing,因为Boolean无论如何都会带回{{1}}