我有一个名为
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
“Is”运算符似乎没有按预期工作并返回 true,尽管我已经通过 debug.print 进行了测试,在我的集合中存在一个 date_cell 设置为 range("C27") 的 imera。
因此,“上面的执行某些操作”部分永远不会执行。
有什么解释为什么会发生这种情况吗?
Is
运算符仅在比较对象的相同实例时才会返回true。来自这篇 MDSN 文章:
Is 运算符确定两个对象引用是否引用相同的对象 目的。但是,它不执行值比较。如果对象1和 object2 都引用完全相同的对象实例,结果为 True; 如果不这样做,结果为 False。
您可以比较
day.date_cell.address
来检查是否相同的范围。
If day.date_cell.Address = LastMetrisi.Address Then
'Do Something...