Excel VBA对象变量类型不匹配

aa

我正在尝试使用以下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:“未设置对象变量或With块变量”。

根据我在网上阅读的帖子,当您尝试将一种类型的值分配给已声明为另一种类型的变量时,会发生此错误。

但是,我试图理解为什么我在这里得到这个错误,因为它aCell是一个范围对象,我只是在拍摄aCell.Column,但是当我这样Range("A1").Column时,我的确得到了有效的1打印在屏幕上。

那么,这可能是导致问题的原因吗?

瓦罗卡巴

您收到此错误的原因是因为它aCell为null(未找到匹配项)。在使用方法的范围Find(或等效范围,可能是Nothing)之前,必须在以下几行上设置条件:

If (Not aCell Is Nothing) Then
  MsgBox aCell.Column
End If

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章