Excel的VBA对象变量类型不匹配
我试图使用以下VBA代码以确定报头的在Excel电子表格中的列号:Excel的VBA对象变量类型不匹配
Dim aCell As Range
Set aCell = Sheet1.Rows(1).Find(What:="ContractDescription", LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
然后下面的代码行给出一个错误:
MsgBox (aCell.Column)
它给出运行时错误91:“对象变量或块变量未设置”。
据我已经在互联网上阅读文章,当你试图把一个类型的值分配给已被宣布为不同类型的变量出现此错误。
不过,我想知道为什么我在这里得到这个错误,因为aCell
是一个范围对象,我只是服用aCell.Column
,但是当我做Range("A1").Column
我得到印在屏幕上的有效1
。
那么在这里可能会导致问题呢?
为什么你这个错误是因为aCell
是空的原因(没有找到匹配)。使用来自Find
方法(或等价物,其中该范围可能是Nothing
)范围之前,你必须设置的线路条件:
If (Not aCell Is Nothing) Then
MsgBox aCell.Column
End If
+ 1点在: - ) –
@SiddharthRout谢谢:) – varocarbas
但由于aCell是什么,MSGBOX没有得到执行 - 我如何才能被执行MSGBOX? – Aaa
如果.Find
失败,它将返回&设置aCell
到Nothing
如此试图访问任何实例成员,如.Column
将引发该错误。
为了防止这种情况发生,
if not aCell Is Nothing
MsgBox aCell.Column
else
MsgBox "not found"
end if
+ 1 Spot On :-) –
您也可能想看看[这](http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/) –