В модуле пользовательского класса VBA (и с расширением VB6?), Если есть частная переменная экземпляра, определенная как публичное перечисление из того же класса, должна ли она быть квалифицирована ..? Если так, как ..?
У меня часто есть ссылки на проекты с одинаковыми типами. Например, Excel и Word имеют объект Range
. Поэтому я всегда настолько конкретен, насколько это возможно, когда объявляю переменные, такие как Excel.Range
или Word.Range
, а не просто Dim R As Range
.
А как же перечисления ..? Как быть конкретным с этими ..? Я пытался квалифицировать переменную как перечисление, но всегда получаю ошибку. Я попытался переместить определение перечисления в другой пользовательский класс, но это не помогло. Я не часто создаю классы для VBA, поэтому, возможно, из-за этого я лаю не то дерево.
Если я соответствую ключевому слову Me.
, я получаю ошибку:
"Compile error: Expected New or type name."
Если я подхожу к названию пользовательского класса, я получаю ошибку:
"Compile error: User-defined type not defined"
Вот полный пример:
'Custom class module.
Option Explicit
Public Enum ImageAspect
ImageAspectHorizontal
ImageAspectVertical
End Enum
' Example 1:
' Qualified to use built-in Excel enumeration. This works.
Private logoAspect1 As Excel.XlOrientation
' Example 2:
' Uses the enum defined in this class. This works, but...
' Can this be qualified..? How..? Is it even necessary?
Private logoAspect2 As ImageAspect
' Example 3:
' This does not work.
Private logoAspect3 As Me.ImageAspect
' Example 4:
' This does not work.
Private logoAspect4 As ThisClass.ImageAspect
Public Property Let Aspect(ByVal pAspect As ImageAspect)
logoAspect2 = pAspect
End Property
Public Property Get Aspect() As ImageAspect
Set Aspect = logoAspect2
End Property