Excel VBA对象variablestypes不匹配
我正在尝试使用以下VBA代码确定Excel电子表格中标题的列号:
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:“对象variables或块variables未设置”。
根据我在互联网上阅读的post,当您尝试将一种types的值分配给已被声明为不同types的variables时,会发生此错误。
但是,我想明白为什么我在这里得到这个错误,因为aCell
是一个范围对象,我只是采取aCell.Column
,但是当我做Range("A1").Column
我得到有效的1
印在屏幕。
那么可能是什么原因造成了这个问题呢?
你得到这个错误的原因是因为aCell
是空的(没有find匹配)。 在使用Find
方法(或等效方法,范围可能为Nothing
)的范围之前,必须在以下行上设置条件:
If (Not aCell Is Nothing) Then MsgBox aCell.Column End If
如果.Find
失败,它将返回&设置aCell
为Nothing
所以试图访问像.Column
任何实例成员将引发该错误。
为了防范这一点,
if not aCell Is Nothing MsgBox aCell.Column else MsgBox "not found" end if