首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vba搜索功能

vba搜索功能
EN

Stack Overflow用户
提问于 2011-07-16 03:15:15
回答 2查看 4.7K关注 0票数 1

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

代码语言:javascript
复制
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”

这可能是一个简单的问题,但我就是想不出来。

EN

回答 2

Stack Overflow用户

发布于 2011-07-16 03:57:59

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

代码语言:javascript
复制
Set pRange = .Find(eString, LookIn:=xlValues)

If Not pRange Is Nothing Then
    ' string check here 
End If 
票数 2
EN

Stack Overflow用户

发布于 2011-07-16 03:57:14

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

代码语言:javascript
复制
If pRange Is Nothing Then
    bDT = True
Else
    bDT = False
End If

或者实际上,您可以完全消除if/else块,只执行ExceptionSearch=pRange Is Nothing,因为pRange Is Nothing无论如何都会返回一个Boolean

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6712077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档