2011-09-11 64 views
1

私はカスタムコレクションクラスRecordを構築しています。Collectionクラスの代わりにNewEnum()でRangeオブジェクトを使う(For Eachで)

は、私は現在で私のクラスの列挙を有効にしている:現在

private pRecord as Collection 

' 
' Enables enumeration of the pRecords Collection (ie using For Each). 
' 
Public Property Get NewEnum() As IUnknown 
    Attribute NewEnum.VB_UserMemId = -4 
    Attribute NewEnum.VB_MemberFlags = "40" 

    Set NewEnum = pRecord.[_NewEnum] 
End Property 

、pRecordは、いくつかのRangeオブジェクトの行にある個々のセルを含むコレクションで、例えば範囲(「A1:C6」) .Rows(1)。

pRecordsコレクションの代わりに列挙されるオブジェクトとして、実際の行範囲を設定することはできますか?もしそうなら、あなたはどうやってそれをしますか?

これは、範囲オブジェクトのFor Eachを既に使用できるようにする必要があることを示しています。

+0

いずれの方法でもセルを列挙できませんか?このhttp://www.dailydoseofexcel.com/archives/2010/07/04/custom-collection-class/(または類似のもの)から作業していますか? –

+0

@Tim Williams、ええ、このウェブサイトはカスタムコレクションについて非常にうまく説明しています。私は自分のコードの効率を改善しようとしています。 Rangeは既にコレクションなので、pRecordの代わりに使うことができます。しかし、Rangeクラスの_NewEnumプロパティを見ることはできません。 – br3nt

+0

代わりに、行を返すメソッド(つまり、RangeとしてGet Row()を取得する)を作成し、For Eachを使用する方法があります。それは正常に動作しますが、それでもNewEnumプロパティでCollectionではなくRangeを使用する方法が不思議に思えます。 – br3nt

答えて

2

あなたのコレクションにRangeオブジェクトを代入しようとしましたか?

関連する問題