當前位置:成語大全網 - 新華字典 - excel 可不可以在VBA類模塊裏設置動態數組作為屬性,然後在標準模塊中給這個動態數

excel 可不可以在VBA類模塊裏設置動態數組作為屬性,然後在標準模塊中給這個動態數

類模塊的編寫跟日常寫代碼的編程思想有很大反差,類模塊的主題是創建,而日常的代碼是使用。

類模塊裏是禁止使用Public類型的動態數組作為模塊級變量的,而私有級的變量外界不可直接調用,那麽也失去了數組的意義。

因為通過類模塊創建的實例,我們通常稱之為對象,而縱觀Applicaiton集合對象,Range集合對象,Addins集合對象,等等各種對象,似乎官方總會給予壹個“集合”概念。實際上,這裏的“集合”就相當於壹個動態數組,比如WorkBooks(1)就返回第壹個工作簿,WorkSheets(2)就返回第二個工作表,這個不正是動態數組所需要表達的意義麽!?

所以,建議妳嘗試使用Collect對象,來實現類似於動態數組的功能。給妳壹個參考示例:

Rem?-==巴蜀兄弟連==-?團隊提供支持

Public?Arr?As?New?Collection

Public?Function?Add(ByRef?R?As?Range)?As?Range

Set?Add?=?R'創建對參數R對應單元格的引用

Arr.Add?Add'將建立的引用實例添加到Arr集合

End?Function

然後標準模塊創建實例,並返回集合元素的值:

Private?mm?As?New?unsamesky'創建類模塊unsamesky的壹個實例mm

Private?Sub?xx()

Dim?i?As?Long

For?i?=?1?To?10

mm.Add?Sheet1.Cells(i,?1)'給A1到A10單元格添加到mm實例的Arr集合中

Next

End?Sub

Sub?yy()

Call?xx'調用xx

MsgBox?mm.Arr(3)'試試返回集合的第3個元素,也就是工作表的第A3單元格的內容!

End?Sub

可使用附件測試: