2011-09-11 20 views
1

我正在構建一個自定義集合類Record。使用NewEnum()而不是Collection類的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是包含單個細胞的集合,是在一定範圍內對象的行,如範圍(「A1:C6」) .Rows(1)。

是否可以將實際行Range設置爲枚舉對象而不是pRecords集合?如果是這樣,你怎麼做?

我認爲這一定是可能的,因爲你已經可以使用範圍對象上的For Each了。

+0

難道你不在枚舉單元格嗎?你是從這個http://www.dailydoseofexcel.com/archives/2010/07/04/custom-collection-class/(或類似的東西)工作嗎? –

+0

@蒂姆威廉姆斯,是的,該網站非常好地解釋了自定義集合。我期待提高我的代碼的效率。由於Range已經是一個集合,我應該可以使用它來代替pRecord。但我不能看到範圍類中的任何_NewEnum屬性。 – br3nt

+0

另一種方法是我創建一個返回行的方法(即Property Get Row()as Range)並使用For Each。這將工作正常,但這仍然讓我想知道如何在NewEnum屬性中使用Range而不是Collection。 – br3nt

回答

2

您是否試過用Range對象代替集合?