質問

いのに対して繰り返し処理を実行するよ員の任意のクラスを参照される図書館のようは、オブジェクトブラウザです。どのような方法で実現できるのVBAを使用?

他のヒント

実際には、これを行う方法を文書化されていないが、可能です。あなたのコレクションのfor..Each構文を実装するために探しているなら、あなたは、次の操作を行うことができます:

Option Compare Database
Option Explicit

Public colT       As New Collection

Public Function NewEnum() As IUnknown

   Set NewEnum = colT.[_NewEnum]

End Function

Public Property Get NextItem() As IUnknown
Attribute NextItem.VB_UserMemId = -4
Attribute NextItem.VB_MemberFlags = "40"

   Set NextItem = colT.[_NewEnum]

End Property

上記の属性の設定に注意してください。メモ帳で、上記のようにSaveAsTextと編集コードを使用する必要があります。その後、再インポートデバッグコマンドラインでloadfromTextを使用してコードを。あなたが上記の操作を行うならば、あなたは行くことができます:

Dim n       As clstest1
Dim v       As Variant

Set n = New clstest1

[ code here that adds to collection]

For Each v In n
   Debug.Print v
Next

そして、あなたがコレクションのためにのために...それぞれ使用することを見ていない場合は、あなたの可能性/こともでき、セットアップ行くことによって、クラスのデフォルトプロパティます:

Public Property Get Item(Optional ndx As Integer = 1) As Variant
Attribute Item.VB_UserMemId = 0
   Select Case ndx
      Case 1: Item = Me.s1
      Case 2: Item = Me.s2
      Case 3: Item = Me.s3
   End Select

End Property

Public Property Get count() As Integer

   count = 3

End Property

次に、あなたが行くことができます:

Dim n       As clstest1
Dim i       As Integer

Set n = New clstest1

For i = 1 To n.count
   Debug.Print n(i)
Next

しかし、あなたは自動的に内蔵の自動オブジェクトのコレクション(コンパイラオプションでこれをシリアライズする方法はありませんし、クラスの各メソッド/メンバーを追加することができますが、私は、各手続き持つ属性を持つコードを見てきましたどのように私は気づいていませんItem.VB_UserMemId = 1、次いで2、次いで3)。おそらく、より多くの知識を持つ人は)でジャンプすることができます。

ただし、上記が示すように、あなたは、コレクションのfor..eachを実装することができます。カスタムアイテムのプロパティを作成した場合、あなたはプロパティ/メソッドのそれぞれのインデックスを実装することができます。そして、上記が示すように、あなたも、あなたがデフォルトとして作成し、その項目のプロパティを設定することができます。私は、「オプション」に入れ、これさえます:

debug.print n

働くのでしょうか。

debug.print n.Item(1)
あなたはVB6をインストールしている場合は、

- あなたはtlbinf32.dllを試すことができます。 AFAIR - 任意のタイプライブラリの情報を取得するクラスの数を持っている場合 http://support.microsoft.com/kb/224331する

を参照してください。

このは役に立ち http://msdn.microsoft.com/en -us /雑誌/ bb985086.aspxする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top