我正在编写一个函数,它在工作表中查找一个字符串,并用找到的短语的位置设置一个范围变量。当我尝试检查.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':Object variable or With block variable not set”
这可能是一个简单的问题,但我就是想不出来。
发布于 2011-07-16 03:57:59
在对照空字符串检查值之前,您应该检查以确保pRange存在。
Set pRange = .Find(eString, LookIn:=xlValues)
If Not pRange Is Nothing Then
' string check here
End If 发布于 2011-07-16 03:57:14
由于.Find返回一个对象,因此如果未找到该值,则等于Nothing。将其更改为:
If pRange Is Nothing Then
bDT = True
Else
bDT = False
End If或者实际上,您可以完全消除if/else块,只执行ExceptionSearch=pRange Is Nothing,因为pRange Is Nothing无论如何都会返回一个Boolean
https://stackoverflow.com/questions/6712077
复制相似问题