Property Set ステートメント

オブジェクトへの参照を設定する Propertyプロシージャの本文を形成する名前、引数、およびコードを宣言します

構文

[ Public | Private | Friend ] [ Static ] Property Setname ( [ arglist ], reference )
[ statements ]
[ Exit Property ]
[ statements ]
End Property

Property Set ステートメントの構文には、次の指定項目があります。

指定項目 説明
Optional 省略可能。 呼び出し側が引数を渡すことがあるかどうかを示します。
Public 省略可能。 この Property Set プロシージャは、すべてのモジュールにある他のすべてのプロシージャからアクセスできることを示します。 Option Private ステートメントを含むモジュールで使用される場合、このプロシージャはプロジェクトの外部では使用できなくなります。
Private 省略可能。 この Property Set プロシージャは、このプロシージャが宣言されたモジュール内にある他のプロシージャからのみアクセスできることを示します。
Friend 省略可能。 クラス モジュール内でのみ使用します。 この Property Set プロシージャは、プロジェクト全体で参照可能ですが、オブジェクトのインスタンスのコントローラーからは参照できないことを示します。
Static 省略可能。 この Property Set プロシージャのローカル変数が呼び出し間で保持されることを示します。 この Property Set プロシージャの外側で宣言された変数は、このプロシージャ内で使用されていても、Static 属性の影響を受けません。
name 必須。 この Property Set プロシージャの名前です。標準の名前付け規則に従ってください。ただし、同じモジュール内にある Property Get プロシージャまたは Property Let プロシージャと同じ名前にすることもできます。
arglist 必須。 この Property Set プロシージャの呼び出し時に渡される引数を表す変数のリストです。 複数の引数は、コンマで区切られます。
reference 必須。 オブジェクト参照の割り当ての右辺で使用されるオブジェクト参照を格納している変数です。
statements 省略可能。 この Property プロシージャの本文内で実行するステートメントのグループです。

arglist 引数の構文と指定項目は次のとおりです。

[ Optional ] [ ByVal | ByRef ] [ ParamArray ] varname [ ( ) ] [ Astype ] [ =defaultvalue ]

パーツ 説明
Optional 省略可能。 引数が必須でないことを示します。 このキーワードを使用した場合は、それ以降の arglist 内の引数もすべて省略可能にして、Optional キーワードを使用して宣言する必要があります。 Property Setの右側を省略可能にすることはできません。
ByVal 省略可能。 値渡しで引数が渡されることを示します。
ByRef 省略可能。 参照渡しで引数が渡されることを示します。 Visual Basic の既定は ByRef です。
ParamArray 省略可能。 arglist の最後の引数としてのみ使用し、最後の引数が Variant 要素の Optional の配列であることを示します。 ParamArray キーワードを使用することで、任意の数の引数を指定できます。 ByValByRef、または Optional と併用することはできません。
varname 必須。 引数を表す変数の名前です。標準の変数の名前付け規則に従ってください。
type 省略可能。 プロシージャに渡す引数のデータ型です。ByteBooleanIntegerLongCurrencySingleDoubleDecimal (現在サポートされていません)、DateString (可変長のみ)、ObjectVariant、または特定のオブジェクト型を指定できます。 パラメーターが Optional でない場合は、ユーザー定義型の指定も可能です。
defaultvalue 省略可能。 任意の定数または定数式です。 Optional のパラメーターにのみ有効です。 Object 型の場合、明示的な既定値は Nothing のみが有効です。

注:

すべての Property Set ステートメントでは、そのステートメントで定義するプロシージャのための引数を少なくとも 1 つ定義する必要があります。 その引数 (複数ある場合は最後の引数) には、Property Set ステートメントで定義されたプロシージャの呼び出し時に、プロパティの実際のオブジェクト参照を格納します。 これは、前の構文では 参照 と呼ばれます。 Optional にすることはできません。

解説

PublicPrivate、または Friend を使用した明示的な指定がない場合、Property プロシージャは既定でパブリックになります。 Static が使用されていない場合、ローカル変数の値は呼び出し間で保持されません。

Friend キーワードは、クラス モジュールでのみ使用できます。 ただし、Friend プロシージャは、プロジェクトに含まれるどのモジュール内のプロシージャからでもアクセスできます。 Friend プロシージャは、その親クラスのタイプ ライブラリには表示されません。また、Friend プロシージャは、遅延バインディングもできません。

すべての実行可能なコードは、プロシージャ内に配置する必要があります。 Property Set プロシージャは、別の Property プロシージャ、Sub プロシージャ、または Function プロシージャの内側で定義することはできません。

Exit Property ステートメントにより、Property Set プロシージャは即時終了します。 プログラムの実行は、その Property Set プロシージャを呼び出したステートメントの次のステートメントから続行されます。 Exit Property ステートメントは、Property Set プロシージャ内の任意の場所にいくつでも配置できます。

Function プロシージャや Property Get プロシージャと同様に、Property Set プロシージャは個別のプロシージャとして、引数を取り、一連のステートメントを実行し、その引数の値を変更できます。 ただし、値を返す Function プロシージャや Property Get プロシージャとは異なり、Property Set プロシージャは、オブジェクト参照の割り当てまたは Set ステートメントの左辺でしか使用できません。

この例では、Property Set ステートメントを使用して、オブジェクトへの参照を設定するプロパティ プロシージャを定義します。

' The Pen property may be set to different Pen implementations. 
Property Set Pen(P As Object) 
 Set CurrentPen = P ' Assign Pen to object. 
End Property

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。