我有一个名为imera
的自定义类,其中包含一个名为date_cell
的范围属性。
在创建imera的集合时,每个imera的date_cell都设置为引用excel中的特定单元格。
尝试按date_cell搜索集合时:
Option Explicit
Public imeraCol as Collection
Sub searchByDateCell()
Dim day As imera
Dim LastMetrisi As Range
Set LastMetrisi = Range("C27")
For Each day In imeraCol
If day.date_cell Is LastMetrisi Then
'Do something
End If
Next day
Set day = Nothing
End Sub
"是"是"运算符似乎没有按预期工作并返回true,尽管我已经通过debug.print测试,在我的集合中存在一个将date_cell设置为范围的imera(" C27")。
因此,上面的“做某事”部分永远不会执行。
有没有解释为什么会发生这种情况?
答案 0 :(得分:3)
Is
运算符只会在比较对象的相同实例时返回true。来自this MDSN article:
Is运算符确定两个对象引用是否引用相同 宾语。但是,它不执行值比较。如果object1和 object2都指向完全相同的对象实例,结果为True; 如果他们不这样做,结果就是假的。
您可以比较day.date_cell.address
来检查相同的范围。
If day.date_cell.Address = LastMetrisi.Address Then
'Do Something...