関数・メソッド

Propertyプロシージャを使ってプロパティを設定する【Property Let/Set/Get】【ExcelVBA】

Propertyプロシージャ

プロパティの作成や設定をカスタムできるプロシージャです。
Propertyプロシージャには3つのステートメントが存在します。

1.Property Letステートメント → オブジェクト以外の値を設定する(戻り値なし)
2.Property Setステートメント → オブジェクトの値を設定する(戻り値なし)
3.Property Getステートメント → プロパティの値を取得する(戻り値あり)

構文
1.[ Public | Private | Friend ] [ Static ] PropertyLet name ( [ arglist ], value )
  [ statements ]
  [ Exit Property ]
  [ statements ]
 End Property

2.[ Public | Private | Friend ] [ Static ] PropertySet name ( [ arglist ], reference )
  [ statements ]
  [ Exit Property ]
  [ statements ]
 End Property

3.[ Public | Private | Friend ] [ Static ] Property Get name [ (arglist) ] [ As type ]
  [ statements ]
  [ name = expression ]
  [ Exit Property ]
  [ statements ]
  [ name = expression ]
 End Property

Publicすべてのモジュールにある他のプロシージャからアクセスできることを示します。省略可。
※Option Privateステートメントを含むモジュールで使用されている場合、このプロシージャはプロジェクトの外で使用できません。
Private同じモジュール内のプロシージャのみアクセスできることを示します。省略可。
Friendクラスモジュール内でのみ使用します。省略可。
※オブジェクトのインスタンスのコントローラーからは参照できません。
Staticプロシージャのローカル変数が呼び出し間で保持されることを示します。省略可。
※このプロシージャ外で宣言された変数は、Static属性の影響を受けません。
nameプロシージャの名前です。同じモジュール内にあるProperty Let/Set/Getプロシージャは同じ名前にすることができます。必須。
arglistプロシージャの呼び出し時に渡される引数を表す変数のリスト。必須(3⃣は省略可)。
statementsプロシージャの本文内で実行するステートメントのグループです。省略可。
value(1.)プロパティの値またはオブジェクト参照を格納している変数です。
この引数は呼び出し元の式の右辺に置きます。必須。
※valueのデータ型は対応するProperty Getプロシージャの戻り値の型と同じにしてください。
reference(2.)オブジェクト参照の割り当ての右辺で使うオブジェクト参照を格納している変数です。必須。
expression(3.)Property Getステートメントで定義したプロシージャが返すプロパティの値です。省略可。

Pripertプロシージャを使ったサンプルコード

'■スコアによってコメントが変わる
Private highscore_ As Long

'呼び出し用のプロシージャ
Sub todays_highscore()
    highscore = 50      'ハイスコアを設定する
    Debug.Print comment 'イミディエイトに"Excellent"と表示
End Sub

'Property Letプロシージャで値を設定する
Property Let highscore(new_highscore As Long)
    highscore_ = new_highscore
End Property
 
'Property Getプロシージャで値を返す
Property Get comment() As String
    If highscore_ >= 40 Then
        comment = "Excellent"
    ElseIf highscore_ >= 20 Then
        comment = "Nice"
    Else
        comment = "Do your best"
    End If
End Property


注意点

  • 通常GetとLet、GetとSetのペアで使用します。
  • Property Let/Setステートメントでは、少なくとも一つは引数を定義してください。

関連記事

コメント

タイトルとURLをコピーしました