본문 바로가기
언어 참조

Property 프로시저 호출

2023. 8. 1.

이 글은 도움말을 번역한 글입니다.

다음 표에는 Property 프로시저를 호출하기 위한 구문이 나열되어 있습니다.

Property procedure Syntax
Property Let [ object.] propname (arguments)] = argument
Property Get varname = [ object.] propname (arguments)]
Property Set Set [ object.] propname. [ (arguments) ] = varname

Property Let 또는 Property Set 프로시저를 호출할 때 항상 등호(=)의 오른쪽에 하나의 인수가 나타납니다.

'클래스 모듈 이름 MyClass
Private pValue As Integer

Property Get Value() As Integer
    Value = pValue
End Property

Property Let Value(Value As Integer)
    pValue = Value
End Property
Sub TestMyClass()
    Dim obj As MyClass
    Set obj = New MyClass
    
    ' Property Let 프로시저를 호출하려면 등호(=)의 오른쪽에 하나의 인수를 사용합니다.
    obj.Value = 10
    
    Debug.Print "Value: " & obj.Value ' 10이 출력됩니다.
End Sub

여러 개의 인수를 사용하여 Property Let 또는 Property Set 프로시저를 선언하는 경우 Visual Basic은 호출의 오른쪽에 있는 인수를 Property Let 또는 Property Set 선언의 마지막 인수로 전달합니다.

예를 들어 다음 다이어그램에서는 속성 프로시저 호출의 인수가 Property Let 선언의 인수와 어떻게 관련되는지 보여 줍니다.

실제로 여러 인수가 있는 Property 프로시저의 유일한 용도는 Property 배열을 만드는 것입니다.

예제 코드 - 1

'Matrix 클래스
Private pData() As Double

Private Sub Class_Initialize()
    ReDim pData(1 To 3, 1 To 3)
End Sub

Property Get Cell(i As Integer, j As Integer) As Double
    Cell = pData(i, j)
End Property

Property Let Cell(i As Integer, j As Integer, Value As Double)
    pData(i, j) = Value
End Property
Sub TestMatrix()
    Dim Matrix As Matrix
    Set Matrix = New Matrix
    
    Matrix.Cell(1, 2) = 5
    Matrix.Cell(3, 3) = 7
    
    Debug.Print "Cell(1,2): " & Matrix.Cell(1, 2) & vbCrLf & _
           "Cell(3,3): " & Matrix.Cell(3, 3)
End Sub

예제 코드 - 2

'Table 클래스
Private pTableData() As Variant

Private Sub Class_Initialize()
    ReDim pTableData(1 To 3, 1 To 3)
    pTableData(1, 1) = "A1"
    pTableData(1, 2) = "B1"
    pTableData(1, 3) = "C1"
    pTableData(2, 1) = "A2"
    pTableData(2, 2) = "B2"
    pTableData(2, 3) = "C2"
    pTableData(3, 1) = "A3"
    pTableData(3, 2) = "B3"
    pTableData(3, 3) = "C3"
End Sub

Property Get Cell(row As Integer, col As Integer) As Variant
    Cell = pTableData(row, col)
End Property

Property Let Cell(row As Integer, col As Integer, value As Variant)
    pTableData(row, col) = value
End Property
Sub TestTable()
    Dim tbl As Table
    Set tbl = New Table
    
    tbl.Cell(1, 3) = "MODIFIED"
    tbl.Cell(2, 1) = "CHANGED"
    
    Debug.Print "Cell(1,3): " & tbl.Cell(1, 3) & vbCrLf & _
           "Cell(2,1): " & tbl.Cell(2, 1)
End Sub

도움말 출처

Calling property procedures (VBA)

Office VBA reference topic

learn.microsoft.com

'언어 참조' 카테고리의 다른 글

배열 선언 및 사용  (0) 2023.08.01
속성을 설정할 때 코드 실행  (0) 2023.08.01
Property 프로시저 작성  (0) 2023.08.01
함수에서 문자열 반환  (0) 2023.08.01
Function 프로시저 작성  (0) 2023.08.01