调用属性过程

下表列出了用于调用 属性过程的语法:

Property 过程 语法
Property Get [Set ] varname = [ object.] propname [ ( [arguments] ) ]
Property Let [Let ][ object.] propname [ ( [arguments] ) ] = argument
Property Set Set [ object.] propname [ ( [arguments] ) ] = objectArg

属性过程调用至少需要一个参数、 赋值 (=) 运算符和属性过程名称。

  • 赋值运算符右侧具有属性名称的调用中,Visual Basic 调用 Property Get 以从类/对象返回信息。
  • 具有赋值运算符左侧属性名称的调用中,Visual Basic 调用 Property LetProperty Set 以更新类对象中的信息。

如果属性过程的声明有多个参数(调用 Property LetProperty Set),则将赋值运算符右侧的参数传递给 Property LetProperty 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

实际上,具有多个参数的 Property 过程的唯一用途是创建属性数组

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。