方法: コレクションの項目を追加、削除、および取得する (Visual Basic)
Visual Basic の Collection クラスには、項目を追加、削除、および取得するのための組み込み機能が含まれています。
新規顧客など、新たに項目が作成または取得されたときは、すぐにコレクションに追加できます。
従業員が退職した場合など、項目がコレクションに属さなくなったときは、コレクションからその項目を削除できます。
学生の電話番号が変わった場合などは、コレクションから項目を取得してその内容を編集できます。
注意
要素を追加したり削除したりすると、Collection オブジェクトによって数値インデックス番号が自動的に更新されます。 したがって、ある特定の要素を指す数値インデックスがたびたび変わる場合もあります。 このため、数値インデックスの値を保存しても、プログラムでそれを使って後から同じ要素を取得できるとは限りません。 この目的には、キーを使用します。
コレクションに項目を追加するには
Add メソッドを使用し、Key によって項目を指定します。
object.Add(Item, Key [, {Before | After}])
たとえば、作業指示の ID プロパティをキーとして使って、作業指示のコレクションに作業指示オブジェクトを追加するには、次のように呼び出しを行います。
workOrders.Add(woNew, woNew.ID)
上の呼び出しでは、ID プロパティが文字列であることを前提としています。 このプロパティが数値 (Long 型の整数など) の場合は、ToString メソッドを使って String 型の値に変換する必要があります。これは、Key 引数が文字列値である必要があるためです。
workOrders.Add(woNew, woNew.ID.ToString())
キーは省略できます。 コレクション内のオブジェクトにキーを関連付けない場合は、キーを指定しないでコレクションに追加することもできます。
workOrders.Add(woNew)
コレクション内のオブジェクトの順序を維持するには、オプションの Before 引数と After 引数を使用します。 Before を指定してコレクションに追加した項目は、指定した項目の前に配置され、After を指定した場合は指定した項目の後に配置されます。 たとえば、Before を 1 に設定すると、Collection のインデックス番号は 1 から始まるため、項目はコレクションの先頭に挿入されます。
workOrders.Add(woNew, woNew.ID, 1)
同様に、After 引数では、指定したインデックスの後に項目が追加されます。 次の例では、項目が 3 番目の要素として追加されます。
workOrders.Add(woNew, woNew.ID,,2)
Before と After には、いずれか一方に値を指定することはできますが、一度に両方の値を指定することはできません。
コレクションから項目を削除するには
Remove メソッドを使用し、Index または Key によって項目を指定します。
object.Remove({Index | Key})
Index 引数は、削除する項目の位置を示します。 Key 引数は、コレクションに項目を追加するときに使用した文字列と同じ文字列です。 コレクションの 3 番目にある要素のキーが "W017493" の場合、削除するには次の 2 つのステートメントのいずれも使用できます。
workOrders.Remove(3) workOrders.Remove("W017493")
コレクションからすべての項目を削除するには
Clear メソッドを使用します。
object.Clear()
Clear メソッドはコレクションを空にします。
コレクションから項目を取得するには
Item プロパティを使用し、Index または Key によって項目を指定します。
variable = object.Item({Index | Key})
Remove メソッドと同様、Index 引数はコレクション内の項目の位置を示し、Key 引数は項目を追加したときに使用した文字列です。 Remove メソッドと同じ例を使って説明すると、次のステートメントのいずれを使用しても、コレクションの 3 番目の要素を取得できます。
woCurrent = workOrders.Item(3) woCurrent = workOrders.Item("W017493")
注意
キーとして数値を使用する場合は、ToString メソッドを使用してキーを文字列に変換してから、Add メソッドや Remove メソッド、または Item プロパティに渡す必要があります。 Visual Basic の Collection オブジェクトでは、数値は常に、キーの文字列ではなくインデックスであると見なされます。
コンパイル時にキーがわかっている場合は、別の方法として、ディクショナリ アクセス演算子 (!) を使用して、キーを引用符やかっこで囲まないでコレクションの要素にアクセスできます。 その場合、上の呼び出しは次のように記述することもできます。
woCurrent = workOrders!W017493