変更中の既存のコードがいくつかあります。このコードは、既存のワークシート テーブルから行のコレクションを作成します。各列に個別の情報を持つ大規模な 2-D コレクションが作成されます。各列のデータ型を宣言する別のクラス モジュールがあります。
このコードは、各項目を順番にループすることにより、2-D コレクションを新しいシートに書き込みます。これまでコレクションを使用したことがなく、1 回のパスでコレクションをシートに書き込みたいと考えています。テーブルに多くのレコードがある場合、現在のコードは非常に長い時間がかかります。
コレクション全体を 2 次元配列に変換する方法、または 2 次元配列を一度に書き込めるようにする方法はありますか? または、2 次元配列のように、コレクション全体をシートに書き込む方法はありますか? 私はこれを検索しようとしましたが、これまでのところ成功していません。一般的なポイントをいただければ幸いです。
コレクションがどのように使用されているかを示すために、コメントを太字で示したコード例を次に示します。
TableEntry という名前のクラス モジュールを定義します。
Public Item1 As String
Public Item2 As String
Public Item3 As String
Public Item4 As Integer
Public Item5 As Integer
メイン ルーチン - コレクションの作成、コレクションの入力、シートへのコレクションの書き込み
Sub MainRoutine()
Dim table As Collection
Set table = New Collection
Call FillCollection(File As String, ByRef table As Collection)
Call WriteCollectionToSheet(ByRef table As Collection)
サブルーチン 1 - コレクションを埋める
Dim wb As Workbook
Set wb = Workbooks.Open(File)
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Dim R As Range
Set R = ws.Range("A2")
Dim e As TableEntry
For i = 1 To 20
Set e = New TableEntry
e.Item1 = R.Offset(i + 1, 0).Offset(0, 0)
e.Item2 = R.Offset(i + 1, 0).Offset(0, 1)
e.Item3 = R.Offset(i + 1, 0).Offset(0, 2)
e.Item4 = R.Offset(i + 1, 0).Offset(0, 3)
e.Item5 = R.Offset(i + 1, 0).Offset(0, 4)
table.Add e
Next i
Next ws
サブルーチン 2 - コレクションをシートに書き込む