Вызывающие процедуры свойств

В следующей таблице приведен синтаксис для вызова процедур свойств:

Процедура свойства Синтаксис
Property Get [Задать ] варнаме = [ объект.] propname [( [аргументы] )]
Property Let [Let ] [ объект.] propname [( [аргументы] )] = argument
Property Set Задать [ объект.] propname [( [аргументы] )] = objectArg

Для вызовов процедур свойств требуется по крайней мере один аргумент, оператор присваивания (=) и имя процедуры свойства.

  • В вызове с именем свойства в правой части оператора присваивания Visual Basic вызывает Property Get , чтобы вернуть сведения из класса или объекта.
  • В вызове с именем свойства в левой части оператора присваивания Visual Basic вызывает Property Let или Property Set для обновления сведений в объекте класса.

Если объявление процедуры свойства содержит несколько параметров, вызывая Property Let или Property Set, передает аргумент в правой части оператора присваивания последнему параметру процедурам Property Let или Property Set .

Например, на следующей схеме используется Property Let , чтобы показать, как аргументы в вызове процедуры свойства (сверху) связаны с параметрами в объявлении (внизу):

Property Let

В следующем примере кода показана связь между аргументами процедуры свойства и параметрами.

'DemoType class declaration
Private pW
Private pX
Private pY
Private pZ

Property Get DemoProperty(w, x, y)
    'Calling format is: `z = DemoProperty(w, x, y)`
    ' or `Set z = DemoProperty(w, x, y)`
    w = pW
    x = pX
    y = pY
    If IsObject(pZ) Then
        Set DemoProperty = pZ
    Else
        DemoProperty = pZ
    End If
End Property
Property Let DemoProperty(w, x, y, z)
    'Calling format is `DemoProperty(w, x, y) = z`
    pW = w
    pX = x
    pY = y
    pZ = z
End Property
Property Set DemoProperty(w, x, y, z As Object)
    'Calling format is `Set DemoProperty(w, x, y) = z`
    pW = w
    pX = x
    pY = y
    Set pZ = z
End Property
Sub DemoSub()
    Dim myDemo As Object
    Dim a, b, c, d
    Dim w, x, y, z

    Set myDemo = New DemoType

    a = "Hello"
    b = ", "
    c = "world"
    d = "!"

    Debug.Print Join(Array(a, b, c, d), "") ' Hello, world!a

    'Call Property Let DemoProperty(a, b, c, d)
    Let myDemo.DemoProperty(a, b, c) = d
    'Call Property Get
    d = myDemo.DemoProperty(a, b, c)

    Debug.Print Join(Array(a, b, c, d), "") ' Hello, world!
End Sub

На практике процедуры свойств с несколькими аргументами используются только с одной целью — для создания массивовсвойств.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.