如何检查"参考平等"两个范围变量之间

时间:2015-02-12 10:14:22

标签: excel vba reference equality

我对vba不是很有经验,所以从基础知识开始,我似乎总会缺少一些东西。

我有一个名为" imera"的自定义类。其中我包含一个名为" date_cell"的范围属性。 在创建imera的集合时,每个imera的date_cell都会引用excel中的特定单元格。 所以现在我需要在date_cell中搜索集合:

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,并声明为公开。

虽然我已经通过debug.print测试过,在我的集合中存在一个将date_cell设置为范围的imera(" C27"),上面的“做某事”部分永远不会执行。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

Address设置为External时使用True

  

外部: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