excelvba:如何解决运行时错误&x27;91';?
我得到一个错误:excelvba:如何解决运行时错误&x27;91';?,vba,excel,Vba,Excel,我得到一个错误: 运行时错误“91”:未设置对象变量或带块变量 当我尝试执行此代码时: MsgBox Worksheets("Sheet2").Range("2:2").Find(Worksheets("Sheet1").Range("E5").Value, , , xlWhole) 为什么??这一排怎么了 编辑 如果我在管理文本或数字,则该代码有效。但是我在工作表(“Sheet1”).Range(“E5”)和工作表(“Sheet2”).Range(“2:2”)将结果分配给一个范围,并使用.F
运行时错误“91”:未设置对象变量或带块变量
当我尝试执行此代码时:
MsgBox Worksheets("Sheet2").Range("2:2").Find(Worksheets("Sheet1").Range("E5").Value, , , xlWhole)
为什么??这一排怎么了
编辑
如果我在管理文本或数字,则该代码有效。但是我在工作表(“Sheet1”).Range(“E5”)
和工作表(“Sheet2”).Range(“2:2”)
将结果分配给一个范围,并使用.Find()
设置范围。
如果未找到任何内容,则Range()
将为nothing
:
Sub TestMe()
Dim result As Range
With Worksheets(1)
Set result = .Range("2:2").Find("Something", LookAt:=xlWhole)
End With
If Not result Is Nothing Then
Debug.Print result.Address
Else
Debug.Print "Something is not on the second row!"
End If
End Sub
如果要处理日期,则必须使用LookAt:=xlWhole
参数:
将结果
分配给一个范围,并使用.Find()
设置范围。
如果未找到任何内容,则Range()
将为nothing
:
Sub TestMe()
Dim result As Range
With Worksheets(1)
Set result = .Range("2:2").Find("Something", LookAt:=xlWhole)
End With
If Not result Is Nothing Then
Debug.Print result.Address
Else
Debug.Print "Something is not on the second row!"
End If
End Sub
如果要处理日期,则必须使用LookAt:=xlWhole
参数:
找不到该值,因此它不返回任何内容。请避免在运行时对有可能成为nothing
的对象引用进行成员调用Range.Find
在找不到要查找的内容时返回Nothing
,因此使用Range.Find
避免此错误的最简单方法是在Range
对象变量中捕获结果,然后验证它是否为Nothing
,如果不是,则对其进行成员调用以进行确认,是否要搜索第#2行(不是第2列)是否正确?未找到该值,因此它不会返回任何内容。请避免在运行时对可能为nothing
的对象引用进行成员调用Range.Find
在找不到要查找的内容时返回Nothing
,因此使用Range.Find
避免此错误的最简单方法是在Range
对象变量中捕获结果,然后验证它是否为Nothing
,如果不是,则对其进行成员调用以进行确认,你想搜索第2行(不是第2列)对吗?忍者编辑让你赢得了我的投票。谢谢你的解释。你知道我有多喜欢“代码转储”的答案;-)@马蒂尤金登-没有人喜欢他们。:)@维蒂亚塔表示感谢,但这并不能解决问题。考虑一下我在管理日期。我的代码在使用文本或数字时有效,但在使用日期时无效。@Stefano-日期有点难。请参见编辑。在那里,你应该始终把xlWhole
作为注视参数-忍者编辑为你赢得了我的支持票。谢谢你的解释。你知道我有多喜欢“代码转储”的答案;-)@马蒂尤金登-没有人喜欢他们。:)@维蒂亚塔表示感谢,但这并不能解决问题。考虑一下我在管理日期。我的代码在使用文本或数字时有效,但在使用日期时无效。@Stefano-日期有点难。请参见编辑。您应该始终将xlWhole
作为LookAt参数-