概要 - Collection オブジェクトを反復処理する(VBA/ActiveX)

Collection オブジェクトの特定のメンバーを選択するには、Item メソッドを使用します。

Item メソッドは、識別子として、コレクション内の項目の位置を指定する索引番号または項目の名前を表す文字列を必要とします。

Item メソッドはコレクションの既定のメソッドです。コレクションを参照していてメソッド名を指定していないときは、Item メソッドが割り当てられます。次の式は等価です。

ThisDrawing.Layers.Item("ABC")
ThisDrawing.Layers("ABC")
注: For Each 構文を使用してコレクションを同時に反復しているときは、図面編集メソッド(CopyArrayMirror など)をオブジェクトに使用しないでください。コレクションのオブジェクトを編集する前に反復を終えるか、または一時配列を作成して、それをコレクションと等しく設定してください。これで、複写された配列を反復して、編集することができます。

Layers コレクションを反復処理する

次の例は、コレクションを反復して、コレクション内のすべての画層の名前を表示します。

Sub Ch2_IterateLayer()
    ' Iterate through the collection
    On Error Resume Next

    Dim I As Integer
    Dim msg As String
    msg = ""
    For I = 0 To ThisDrawing.Layers.count - 1
        msg = msg + ThisDrawing.Layers.Item(I).Name + vbCrLf
    Next
    MsgBox msg
End Sub

MyLayerという名前の画層を検索

次の例は画層名 "MyLayer" を検索し、見つからない場合はメッセ-ジを表示します。

Sub Ch2_FindLayer()
    ' Use the Item method to find a layer named MyLayer
    On Error Resume Next

    Dim ABCLayer As AcadLayer
    Set ABCLayer = ThisDrawing.Layers("MyLayer")
    If Err <> 0 Then
        MsgBox "The layer 'MyLayer' does not exist."
    End If
End Sub