Property Let ステートメント

Propertyプロシージャの本文を形成する名前、引数、およびコードを宣言します。これは、プロパティに値を割り当てます。

構文

[ Public | Private | Friend ] [ Static ] Property Letname ( [ arglist ], value )
[ statements ]
[ Exit Property ]
[ statements ]
End Property

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

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

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

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

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

注:

すべての Property Let ステートメントは、定義するプロシージャに対して少なくとも 1 つの 有効な 引数を定義する必要があります。 'valid' は、'Optional' または 'ParamArray' で変更しないことを意味します。 その引数 (複数ある場合は最後の引数) には、Property Let ステートメントによって定義されたプロシージャの呼び出し時に、プロパティに割り当てる実際の値を格納します。 上記の構文では、その引数が value に相当します。

解説

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

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

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

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

Function プロシージャや Property Get プロシージャと同様に、Property Let プロシージャは個別のプロシージャとして、引数を取り、一連のステートメントを実行し、その引数の値を変更できます。 ただし、値を返す Function プロシージャや Property Get プロシージャとは異なり、Property Let プロシージャは、プロパティの代入式または Let ステートメントの左辺でしか使用できません。

この例では、Property Let ステートメントを使用して、プロパティに値を割り当てるプロシージャを定義します。 このプロパティでは、描画パッケージのペンの色を特定します。

Dim CurrentColor As Integer 
Const BLACK = 0, RED = 1, GREEN = 2, BLUE = 3 
 
' Set the pen color property for a Drawing package. 
' The module-level variable CurrentColor is set to 
' a numeric value that identifies the color used for drawing. 
Property Let PenColor(ColorName As String) 
 Select Case ColorName ' Check color name string. 
 Case "Red" 
 CurrentColor = RED ' Assign value for Red. 
 Case "Green" 
 CurrentColor = GREEN ' Assign value for Green. 
 Case "Blue" 
 CurrentColor = BLUE ' Assign value for Blue. 
 Case Else 
 CurrentColor = BLACK ' Assign default value. 
 End Select 
End Property 
 
' The following code sets the PenColor property for a drawing package 
' by calling the Property let procedure. 
 
PenColor = "Red" 

関連項目

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

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