Tôi có một số mã hiện có mà tôi đang sửa đổi. Mã này tạo ra một tập hợp các hàng từ các bảng tính có sẵn từ trước. Nó tạo ra một bộ sưu tập 2-D lớn, với thông tin riêng biệt trong mỗi cột. Có một mô-đun lớp riêng biệt khai báo kiểu dữ liệu cho mỗi cột.Cách viết bộ sưu tập VBA vào trang tính Excel
Mã ghi bộ sưu tập 2-D vào trang tính mới bằng cách lặp lại từng mục. Trước đây tôi chưa từng sử dụng bộ sưu tập nào và muốn viết bộ sưu tập vào trang tính trong một lần gửi. Mã hiện tại mất khá nhiều thời gian khi bảng có nhiều bản ghi.
Có cách nào để chuyển đổi toàn bộ bộ sưu tập thành mảng 2-D hay để tôi có thể viết mảng 2-D chỉ bằng một lần? Hoặc là có một cách để viết toàn bộ bộ sưu tập vào bảng, giống như với một mảng 2-D? Tôi đã cố gắng tìm kiếm điều này và cho đến nay đã không thành công. Bất kỳ điểm chung nào sẽ được đánh giá cao!
Dưới đây là một số mã mẫu, với chú thích in đậm, để minh họa cách sử dụng bộ sưu tập.
Xác định Module Class, được đặt tên như TableEntry
Public Item1 As String
Public Item2 As String
Public Item3 As String
Public Item4 As Integer
Public Item5 As Integer
chính định kỳ - Tạo bộ sưu tập, Điền bộ sưu tập, Viết Bộ sưu tập để tấm
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)
Sub Routine 1 - Điền vào Bộ sưu tập
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
Sub thường xuyên 2 - Viết Bộ sưu tập để tấm
Cảm ơn sự cố. Tôi đã tự tìm thấy bản thân này – psychonomics
Câu trả lời trong liên kết ở trên sử dụng một mảng thay vì một bộ sưu tập. Đây có phải là những gì tôi nên làm, hoặc là có một cách để chuyển một bộ sưu tập vào một mảng, hoặc thực sự để viết một bộ sưu tập trong một vượt qua? – psychonomics
Thực ra, nếu bạn tắt tính năng cập nhật và tính toán màn hình, nó sẽ đủ nhanh, ngay cả khi bạn sử dụng vòng lặp. – martin