ErrorTags
が実際にコレクションであると仮定すると、あなたはこのように考えてあります
ErrorTags
は(あなたがウォッチリストに表示さアイテム)に関連付けられているすべての値を保持するオブジェクトです。そのオブジェクトには、デフォルトのプロパティItem
があります。そのプロパティは、オブジェクトに格納されているすべての値を返すことができますが、一度に1つのみを返します。どの返される、プロパティに渡すパラメータに依存します:
ErrorTags.Items(1)
これは、コレクションに保存された最初の項目を返します。このパラメータは、コレクション内のすべてのアイテムに対処できるインデックスとして機能します。 VBAの一部のコレクションは文字列をインデックスとして受け入れますが、これはコレクションの種類によって異なります。たとえば、Excelでは、ブックのSheets
プロパティは、コレクション(Excelファイル内のすべてのワークシートを含む)を返します。そのコレクションはインデックスとしての数字だけでなく、シート名をインデックスとして使用します。
上記のように、コレクションのItem
プロパティは、のデフォルトのプロパティです。 VBAでは、オブジェクトはデフォルトプロパティを持つことができます。つまり、省略することができます。あなたのコレクションから最初の項目は、したがって、次のように書くことができるアクセスするには、次の
ErrorTags(1)
は今、あなたはおそらく、時にはループの中で一つの項目が、それらのすべてではないだけにアクセスしたいです。カウンターをコレクションのインデックスとして使用して、For
ループでこれを行うことができます。
しかし、より良い方法があります:
あなたは、コレクションのすべての項目を反復処理することができFor Each
ループを使用して Dim et As Variant
For Each et In ErrorTags
' now you have one item stored in et, do with it as you like
Next et
は(それはまた、配列のために動作します)。各パスについて、現在の項目は変数et
に書き込まれます。ループ中であれば、ErrorTags.Items()
の代わりにその変数を使用してください。ループの本体にDebug.Print et
を置くと、ErrorTags
コレクション内のアイテムが単純な文字列であると仮定すると、それらのすべてを直接ウィンドウに出力することができます。
あなたのコレクション内の項目は、オブジェクト自体である場合、あなたはそのオブジェクト型に変数et
の宣言を変更する必要があります。For Each
ループについて
Dim et As ErrorTag ' assuming that is the object type
詳しい情報はthe documentationから入手することができます。
コレクションの場合は "ErrorTags。 – user3598756
VBAではなくVB.Netが可能でしょうか? – Ambie