Collection オブジェクトCollection object

Collection オブジェクトは、アイテムの順序が指定されたセットであり、1 つの単位として参照できます。A Collection object is an ordered set of items that can be referred to as a unit.


Collection オブジェクトを使用すると、関連性のあるアイテムのグループを 1 つのオブジェクトとして簡単に参照できます。The Collection object provides a convenient way to refer to a related group of items as a single object. コレクション内のアイテムつまりメンバーは、コレクションに存在するという事実のみによって関連付けられる必要があります。The items, or members, in a collection need only be related by the fact that they exist in the collection. コレクションのメンバーは同じデータ型を共有する必要はありません。Members of a collection don't have to share the same data type.

コレクションは他のオブジェクトと同じ方法で作成できます。A collection can be created the same way other objects are created. 以下に例を示します。For example:

Dim X As New Collection

コレクションを作成した後は、 Add メソッドを使用してメンバーを追加し、 Remove メソッドを使用して削除できます。After a collection is created, members can be added by using the Add method and removed by using the Remove method. 特定のメンバーは、 Item メソッドを使用してコレクションから返すことができますが、For Each を使用してコレクション全体を反復処理することもできます。 Next ステートメント。Specific members can be returned from the collection by using the Item method, while the entire collection can be iterated by using the For Each...Next statement.


この例では、コレクションオブジェクトMyClasses() を作成し、ユーザーがコレクションにオブジェクトを追加できるダイアログボックスを作成します。This example creates a Collection object (MyClasses), and then creates a dialog box in which users can add objects to the collection.

この動作を確認するには、[挿入] メニューから**** InstanceName[クラスモジュール] コマンドを選択しInstanceName 、Class1 のモジュールレベルで呼び出されるパブリック変数を宣言して、各インスタンスの名前を保持します。To see how this works, choose the Class Module command from the Insert menu and declare a public variable called InstanceName at the module level of Class1 (type Public InstanceName) to hold the names of each instance. Leave the default name as Class1.Leave the default name as Class1. Copy and paste the following code into the General section of another module, and then start it with the statement ClassNamer in another procedure.Copy and paste the following code into the General section of another module, and then start it with the statement ClassNamer in another procedure.

(This example only works with host applications that support classes.)(This example only works with host applications that support classes.)

Sub ClassNamer()
    Dim MyClasses As New Collection    ' Create a Collection object.
    Dim Num    ' Counter for individualizing keys.
    Dim Msg As String    ' Variable to hold prompt string.
    Dim TheName, MyObject, NameList    ' Variants to hold information.
        Dim Inst As New Class1    ' Create a new instance of Class1.
        Num = Num + 1    ' Increment Num, then get a name.
        Msg = "Please enter a name for this object." & vbNewLine _
         & "Press Cancel to see names in collection."
        TheName = InputBox(Msg, "Name the Collection Items")
        Inst.InstanceName = TheName    ' Put name in object instance.
        ' If user entered name, add it to the collection.
        If Inst.InstanceName <> "" Then
            ' Add the named object to the collection.
            MyClasses.Add item := Inst, key := CStr(Num)
        End If
        ' Clear the current reference in preparation for next one.
        Set Inst = Nothing
    Loop Until TheName = ""
    For Each MyObject In MyClasses    ' Create list of names.
        NameList = NameList & MyObject.InstanceName & vbNewLine
    Next MyObject
    ' Display the list of names in a message box.
    MsgBox NameList, , "Instance Names In MyClasses Collection"

    For Num = 1 To MyClasses.Count    ' Remove name from the collection.
        MyClasses.Remove 1    ' Since collections are reindexed automatically, remove the first member on each iteration.
End Sub

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.