テーブル (listobject) へのデータの書き込みでパフォーマンスが低下しています
オブジェクトのコレクションがあり、行ごとにテーブルに書き込みたい
For Each msrecord In mls.mlRecords
Dim oNewRow As ListRow
Set oNewRow = Sheets(mls.name).ListObjects(1).ListRows.Add(AlwaysInsert:=True)
oNewRow.Range.Cells(1, 1).Value = msrecord.id
Next msrecord
ただし、これは遅すぎます。Application.ScreenUpdating = False を試しましたが成功しませんでした。
私の考えは、最初に配列を埋めてから、一度にすべてをテーブルに書き込むことです。
Dim outputArray As Variant
Dim counter As Long
For counter = 1 To mls.mlRecords.Count
outputArray(counter, 1).Value = msrecord.id
outputArray(counter, 2).Value = msrecord.name
outputArray(counter, 3).Value = msrecord.morefields
Next
Sheets(mls.name).ListObjects(1).DataBodyRange.Value = outputArray
ただし、バリアント配列の値を代入すると、型の不一致エラーが発生するようになりました。開始するコレクションがあるため、配列を実際に ReDim することはできません。
何かご意見は?最初に配列を構築するのは理にかなっていますか? テーブル (listobjects) にデータを効率的に書き込むにはどうすればよいですか?