Property プロシージャ
Property プロシージャは、変数やクラスのプロパティ(オブジェクトを含む)に対して、値の設定や取得を行います。通常、Property Get ステートメント と Property Let ステートメント または、Property Get ステートメント と Property Set ステートメント をペアで定義します。
Property Set ステートメント
Property Set ステートメントは、変数やクラスのプロパティ(オブジェクト)に値を設定します。取得には、Property Get ステートメントを使用します。
[ access_level ] [ Static ] Property Set name ( [ arglist,] reference )
[ statements ]
[ Exit Property ]
[ statements ]
End Property
項目の説明
- access_level ・・・ プロシージャを利用できる範囲を指定します。Public・Private・Friend の3種類があります。省略するとPublic を指定した場合と同じになります。
- name ・・・ 定義する Property Set プロシージャの名前を指定します。同じ Class モジュール内で、ペアとなる Property Get プロシージャの名前と同じにします。
- arglist ・・・ Property Set プロシージャが呼び出される時に、Property Set プロシージャに渡される引数を表す変数のリストを指定します。複数の変数を指定する場合はカンマ(,)で区切ります。この時、対応する Property Get プロシージャにも、同じ名前と数の arglist を指定しなければなりません。arglist は省略可能です。
※ Property Set ステートメント の引数は、arglist と reference になり、reference は省略することができないので、対応する Property Get ステートメント よりも引数が常に 1 つ多くなります。 - reference ・・・ オブジェクトへの参照を表す変数を指定します。(必ず指定します。)
- statements ・・・ 実行される一連のステートメントを指定します。
access_level(Public・Private・Friend) の詳細:
Public:すべてのモジュールのすべてのプロシージャから使用することができます。
Private:同一モジュール内からのみ使用可能です。
Friend:プロジェクト内からは呼び出せますが、オブジェクトのインスタンスのコントローラからは呼び出せません。キーワード Friend は、フォームモジュールおよびクラスモジュールでのみ記述可能です。
Static
プロシージャ内のローカル変数が、次に呼び出されるまでその値を保持します。(省略可)
Exit Property ステートメント:
Property プロシージャを直ちに終了します。Exit Property ステートメントは、Property プロシージャ内の任意の場所で必要に応じていくつでも指定できます。
Property Set ステートメント 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
Private p_Cnt As Long Private p_Total As Double Private p_myRng As Range 'Property Set ステートメント Property Set myRng(ByVal CellRange As Range) Dim v, t As Double 'セル範囲 Set p_myRng = CellRange 'セル範囲内のセルの数 p_Cnt = CellRange.Count 'セル範囲内にある数値の合計値 For Each v In p_myRng If IsNumeric(v.Value) Then t = t + v.Value Next v p_Total = t End Property 'Property Get ステートメント Property Get myRng() As Range Set myRng = p_myRng End Property 'Property Get ステートメント Property Get CellCnt() As Long CellCnt = p_Cnt End Property 'Property Get ステートメント Property Get CellTotal() As Double CellTotal = p_Total End Property |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub Sample01_PropertySet() Dim cc As New Class2 Set cc.myRng = Range("A1:C5") MsgBox "セル数:" & cc.CellCnt & Chr(13) & _ "合計値:" & cc.CellTotal Set cc = Nothing End Sub |