Set ステートメント
オブジェクトへの参照を変数またはプロパティに代入するか、プロシージャへの参照をイベントに関連付けます。
Set objectvar = {objectexpression | New classname | Nothing}
または
Set object.eventname = GetRef(procname)
パラメータ
- objectvar
必ず指定します。変数またはプロパティの名前を指定します。宣言する変数の標準的な名前付け規則に従います。 - objectexpression
省略可能です。オブジェクト名、同じオブジェクト型の宣言済み変数、または同じオブジェクト型を返す関数かメソッドで構成された式を指定します。 - New
クラスの新しいインスタンスを作成するキーワードを指定します。objectvar にオブジェクトへの参照が含まれている場合、この参照は新たにオブジェクトへの参照が代入されたときに開放されます。New キーワードは、クラスのインスタンスを作成する場合にのみ使用されます。 - classname
省略可能です。作成するクラス名を指定します。クラスおよびメンバは、Class ステートメントを使って定義します。 - Nothing
省略可能です。objectvar と任意のオブジェクトまたはクラスとの関連付けを解除します。objectvar に Nothing を代入すると、以前に参照されたオブジェクトに関連するすべてのシステムおよびメモリ リソースが開放されます。ただし、他の変数によって参照されている場合を除きます。 - object
必ず指定します。event が関連付けられるオブジェクトの名前を指定します。 - event
必ず指定します。関数がバインドされるイベントの名前を指定します。 - procname
必ず指定します。event に関連付けられる Sub または Function の名前を含む文字列を指定します。
解説
objectvar を有効にするには、代入するオブジェクトに一致するオブジェクト型を指定する必要があります。
Dim ステートメント、Private ステートメント、Public ステートメント、または ReDim ステートメントは、オブジェクトを参照する変数の宣言のみを行います。Set ステートメントを使用して特定のオブジェクトを代入するまでは、実際のオブジェクトは参照されません。
通常、Set ステートメントを使用して変数にオブジェクト参照を代入した場合、その変数用にオブジェクトのコピーが作成されるわけではなく、オブジェクトそのものへの参照が作成されます。複数のオブジェクト変数が、同じオブジェクトを参照することがあります。複数の変数によって参照されているのはコピーではなくオブジェクトそのものなので、オブジェクトになんらかの変更が生じた場合は、そのオブジェクトを参照するすべての変数に反映されます。
Function ShowFreeSpace(drvPath)
Dim fso, d, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set d = fso.GetDrive(fso.GetDriveName(drvPath))
s = "ドライブ " & UCase(drvPath) & " - "
s = s & d.VolumeName & "<BR>"
s = s & "空き領域: " & FormatNumber(d.FreeSpace/1024, 0)
s = s & " KB"
ShowFreeSpace = s
End Function
New キーワードを使用すると、クラスのインスタンスを作成すると同時に、それをオブジェクト参照の変数に代入できます。クラスのインスタンスを代入する変数は、Dim ステートメントまたは同様のステートメントで定義済みである必要があります。
Set ステートメントを使用したプロシージャとイベントの関連付けについては、GetRef 関数のマニュアルを参照してください。