对于指向同一单元格的两个范围variables,“Is”运算符不返回true

我有一个名为imera的自定义类,其中我包含名为date_cell的范围属性。

创build一个imera集合时,每个imera的date_cell被设置为引用excel中的特定单元格。

尝试在date_cell中search集合时:

 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,尽pipe我已经通过debug.print进行了testing,在我的集合中存在一个将date_cell设置为范围(“C27”)的imera。

因此,“做某件事”部分,从不执行。

有什么解释为什么会发生这种情况?

Is运算符只有在比较对象的同一个实例时才会返回true。 从这个MDSN文章 :

Is运算符确定两个对象引用是否引用同一个对象。 但是,它不执行值比较。 如果object1和object2都引用完全相同的对象实例,则结果为True; 如果他们不,结果是假的。

您可以比较day.date_cell.address来检查相同的范围。

 If day.date_cell.Address = LastMetrisi.Address Then 'Do Something...