首页 > 解决方案 > 从另一个嵌套类内部访问一个嵌套类

问题描述

我有一个主类,其中有 3 个嵌套类,如下所示:

主类:

Option Explicit
Private m_Login As Object
Private m_Archivo As Object
Private m_Equivalencia As Object
Private Property Get Logins(ByVal Key As String) As Logins
    With m_Login
        If Not .Exists(Key) Then .Add Key, New Logins
    End With
    Set Logins = m_Login(Key)
End Property
Private Sub Class_Initialize()
    Set m_Login = CreateObject("Scripting.Dictionary")
    Set m_Archivo = CreateObject("Scripting.Dictionary")
    Set m_Equivalencia = CreateObject("Scripting.Dictionary")
End Sub
Private Sub Class_Terminate()
    Set m_Login = Nothing
    Set m_Archivo = Nothing
    Set m_Equivalencia = Nothing
End Sub
Private Property Get Keys() As Variant
    Keys = m_Login.Keys
End Property
Private Property Get Count() As Long
    Count = m_Login.Count
End Property
Private Property Get Items() As Variant
    Items = m_Archivo.Keys
End Property
Public Property Get Archivos(ByVal Key As String) As Archivos
    With m_Archivo
        If Not .Exists(Key) Then .Add Key, New Archivos
    End With
    Set Archivos = m_Archivo(Key)
End Property
Public Property Get Equivalencias(ByVal Key As String) As Equivalencias
    With m_Equivalencia
        If Not .Exists(Key) Then .Add Key, New Equivalencias
    End With
    Set Equivalencias = m_Equivalencia(Key)
End Property

如您所见,三个嵌套类是 Logins、Archivos 和 Equivalencias。

现在我正在尝试从 Logins 类中获取存储在 Equivalencias 类中的数据。

例如,从主类执行此操作时,我只需要编写Equivalencias(id).Property,但我似乎无法从嵌套类 Logins 内部调用它。

我该怎么做?

我需要这样做,因为在 Logins 类中我有这个:

Public Property Get ModificacionCentro() As Boolean

    If Not Baja And Not Alta Then

        Select Case m_Site
            Case "GLORIAS" And m_Centro <> "Barcelona Glorias (AESP) (GRAN VÍA DE LAS CORTS CATALANES 866-872, BARCELONA)"
                ModificacionCentro = True
            Case "ILUSTRACIÓN" And m_Centro <> "Madrid Ilustración (AESP) (C/SANTIAGO DE COMPOSTELA, 94, MADRID)"
                ModificacionCentro = True
            Case "TÁNGER" And m_Centro <> "MARRUECOS TANGER SUCURSAL (AESP) (RUE IBN FOURMAT ANGLE CARNOT, TANGER 90000 (MAROC))"
                ModificacionCentro = True
            Case Else
                ModificacionCentro = False
        End Select
    End If

End Property

现在我正在做硬编码,但如果我可以访问另一个我不需要的类,代码将是:

Public Property Get ModificacionCentro() As Boolean

    If Not Baja And Not Alta Then
        If Not Equivalencias(m_Site) = m_Centro Then ModificacionCentro = False
    End If

End Property

而且我不需要每次网站发生变化时都进行硬编码。

标签: excelvba

解决方案


推荐阅读