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

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

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

代码模块声明cFoolish对象的1000个元素数组,并且作为更大计划的一部分,要将所有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中使用类的程序,我仍然很笨。 这个想法最终是在工作表“Test”中的范围A1:A1000中填充了cFoolish的1000元素数组中的1000个ID整数。

感谢您的任何帮助! 戴夫

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

 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)