如何检查两个范围variables之间的“引用相等”

我在vba方面不是很有经验,所以似乎有些东西我从基础开始就缺失了。

我有一个名为“imera”的自定义类,其中包括名为“date_cell”的范围属性。 当创build一个imera集合时,每个imera的date_cell在excel中引用一个特定的单元格。 所以现在我需要通过date_cell在集合中进行search:

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 

让我注意到,收集被称为imeraCol和宣布为公众。

尽pipe我已经通过debug.printtesting过,在我的集合中存在一个将date_cell设置为范围(“C27”)的imera,但是“执行上面的操作”部分从未执行。 有人知道为什么会发生这种情况?

External Address设置为True

外部:返回一个外部参考。 假返回一个本地引用。

注意: Range要小心,请考虑完全合格的参考,例如: Worksheets(3).Range("C27")

 Option Explicit Public imeraCol As Collection Sub test() Dim imera1 As imera Set imera1 = New imera Set imera1.date_cell = Worksheets(1).Range("A1") Dim imera2 As imera Set imera2 = New imera Set imera2.date_cell = Worksheets(2).Range("B1") Dim imera3 As imera Set imera3 = New imera Set imera3.date_cell = Worksheets(3).Range("C27") Set imeraCol = New Collection ' When creating a collection of imera's, ' every imera's date_cell takes a reference to a specific cell in excel. imeraCol.Add imera1, "imera1" imeraCol.Add imera2, "imera2" imeraCol.Add imera3, "imera3" searchByDateCell End Sub Sub searchByDateCell() Dim day As imera Dim LastMetrisi As Range Set LastMetrisi = Worksheets(3).Range("C27") For Each day In imeraCol If day.date_cell.Address(external:=True) = LastMetrisi.Address(external:=True) Then Debug.Print day.date_cell.Address(external:=True) & " exists in collection" End If Next day Set day = Nothing End Sub