次の方法で共有


オブジェクト変数の作成

オブジェクト変数を、その参照先のオブジェクトとまったく同じように処理できます。 オブジェクトのプロパティを設定または取得したり、オブジェクトのすべてのメソッドを使用したりできます。

オブジェクト変数を作成する

  1. オブジェクト変数を宣言します。

  2. オブジェクト変数をオブジェクトに割り当てます。

オブジェクト変数を宣言する

Dim ステートメントまたは他の宣言ステートメント (PublicPrivate、または Static) のいずれかを使用して、オブジェクト変数を宣言します。 オブジェクトを参照する 変数 は、 VariantObject、または特定の種類のオブジェクトである必要があります。 たとえば、次の宣言が有効です。

' Declare MyObject as Variant data type. 
Dim MyObject 
' Declare MyObject as Object data type. 
Dim MyObject As Object 
' Declare MyObject as Font type. 
Dim MyObject As Font 

注:

オブジェクト変数を最初に宣言しないで使用する場合、オブジェクト変数のデータ型は、既定でバリアント (Variant) になります。

プロシージャが実行されるまで具体的なオブジェクト型が不明な場合、オブジェクト (Object) データ型を使用してオブジェクト変数を宣言できます。 任意のオブジェクトへの汎用的な参照を作成するには、オブジェクト ( Object ) データ型を使用します。

具体的なオブジェクト型が知られている場合、そのオブジェクト型としてオブジェクト変数を宣言する必要があります。 たとえば、アプリケーションに Sample オブジェクト型が含まれている場合は、次のいずれかのステートメントを使用してそのオブジェクトのオブジェクト変数を宣言できます。

Dim MyObject As Object ' Declared as generic object. 
Dim MyObject As Sample ' Declared only as Sample object. 

具体的なオブジェクト型を宣言すると、型チェックが自動的に実行され、コードの処理速度が速くなり、コードが読みやすくなります。

オブジェクト変数をオブジェクトに割り当てる

オブジェクト変数にオブジェクトを割り当てるには、 Set ステートメントを使用します。 オブジェクト式または Nothing を割り当てることができます。 たとえば、次のオブジェクト変数の割り当ては有効です。

Set MyObject = YourObject ' Assign object reference. 
Set MyObject = Nothing ' Discontinue association. 

Newキーワード (keyword) ステートメントSet ステートメントを使用して、オブジェクト変数の宣言とオブジェクトへのオブジェクトの割り当てを組み合わせることができます。 以下に例を示します。

Set MyObject = New Object ' Create and Assign 

オブジェクト変数を Nothing に設定すると、オブジェクト変数と特定のオブジェクトとの関連付けが解除されます。 これにより、変数を変更することでオブジェクトを誤って変更することを回避できます。 オブジェクト変数は、関連付けられたオブジェクトを閉じた後に常に Nothing に設定されるため、オブジェクト変数が有効なオブジェクトを指しているかどうかをテストできます。 以下に例を示します。

If Not MyObject Is Nothing Then 
    ' Variable refers to valid object. 
    . . . 
End If 

もちろん、このテストでは、オブジェクト変数が参照するオブジェクトを含むアプリケーションをユーザーが閉じたかどうかを絶対に確実に判断することはできません。

オブジェクトの現在のインスタンスを参照する

Me キーワード (keyword)を使用して、コードが実行されているオブジェクトの現在のインスタンスを参照します。 現在のオブジェクトに関連付けられているすべてのプロシージャは、 Me として参照されているオブジェクトにアクセスできます。 オブジェクトの現在のインスタンスに関する情報を別のモジュールのプロシージャに渡す場合、 Me を使用すると特に便利です。 たとえば、モジュールに以下のプロシージャが含まれているとします。

Sub ChangeObjectColor(MyObjectName As Object) 
    MyObjectName.BackColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256) 
End Sub

プロシージャを呼び出し、オブジェクトの現在のインスタンスを引数として渡すには、次のステートメントを使用します。

ChangeObjectColor Me 

関連項目

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

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