如何快速将对象数组写入工作表列?

时间:2015-12-02 11:27:45

标签: excel vba class excel-vba

在一个名为cFoolish的大型多属性类中是这段代码片段:

''''' Property Definitions
Private pID As Integer
Public Property Get ID() as Integer
    ID = pID
End Property

代码模块声明了1000个cFoolish对象的元素数组,并且作为更大计划的一部分,想要将所有1000个.ID属性写入工作表:

Public Sub Test()
    Dim MyArray(1 To 1000) As New cFoolish
    Dim rRange As Range

    Set rRange = ThisWorkbook.Sheets("Test").Range("A1:A1000")
    Set rRange.Value = MyArray.ID '''''clearly doesn't work!
End Sub

对不起,这是我在VBA中使用类的第一个程序,我仍然很无能为力。我们的想法是最终得到范围A1:工作表“Test”中的A1000将填充来自cFoolish的1000个元素数组的1000个ID整数。

感谢您的帮助! 戴夫

1 个答案:

答案 0 :(得分:2)

您需要循环,因为您必须单独处理每个实例。您可以将值预加载到数组中并执行表更新:

Dim MyArray(1 To 1000) As New cFoolish

Dim vals(1 To 1000) As Integer
For i = 1 To 1000
    vals(i) = MyArray(i).ID
Next

ThisWorkbook.Sheets("Test").Range("A1:A1000") = WorksheetFunction.Transpose(vals)