Hướng dẫn này sẽ thảo luận về mảng 2 chiều và đa chiều trong VBA.
Mảng đa chiều (Mảng 2D)
Mảng nhiều chiều là mảng chứa nhiều hơn một chiều, thường là hai hoặc ba chiều, nhưng mảng có thể có tối đa 32 chiều.
Khai báo một mảng 2D
Để tạo một mảng có nhiều thứ nguyên, hãy sử dụng dấu phẩy để xác định từng thứ nguyên riêng biệt:
1 | Dim intArr (2,3) dưới dạng Số nguyên |
Đưa vào một mảng 2D
Đoạn mã dưới đây sẽ điền vào một mảng 2D, sau đó điền các hàng và cột của trang tính với các giá trị trong mảng.
1234567891011121314151617181920212223242526 | Sub Populate2D ()'khai báo mảng 2DDim intA (2, 3) Dưới dạng số nguyên'khai báo các biếnDim rw As IntegerDim col As Integer'điền vào mảngintA (0, 0) = 45intA (0, 1) = 50intA (0, 2) = 55intA (0, 3) = 60intA (1, 0) = 65intA (1, 1) = 70intA (1, 2) = 75intA (1, 3) = 80intA (2, 0) = 85intA (2, 1) = 90intA (2, 2) = 95intA (2, 3) = 100'lặp qua mảng và điền vào ExcelĐối với rw = 0 đến 2Đối với col = 0 đến 3Các ô (rw + 1, col + 1) .Value = intA (rw, col)Col tiếp theoRw tiếp theoKết thúc Sub |
Sau đó, bảng tính Excel của bạn sẽ được điền như sau.
Nhập Mảng 2D từ dữ liệu Excel
Đoạn mã dưới đây sẽ điền một mảng 2D từ trang tính Excel và sau đó điền dữ liệu vào một trang tính khác.
1234567891011121314151617181920212223242526 | Sub Populate2D ()'Khai báo các trang tínhDim ws_Source As WorksheetDim ws_Destination As Worksheet'Khai báo mảngDim wsData (10, 2) As Variant'Khai báo các biếnDim rw dưới dạng Số nguyênDim col As Integer'tham khảo trang nguồnĐặt ws_Source = Worksheets ("Sheet1")'lấy thông tin từ trang tính nguồn và điền vào mảngĐối với rw = LBound (wsData, 1) Đến UBound (wsData, 1)Đối với col = LBound (wsData, 2) Đến UBound (wsData, 2)wsData (rw, col) = ws_Source.Range ("A2"). Phần bù (rw, col) .ValueCol tiếp theoRw tiếp theo'tham khảo trang đíchĐặt ws_Destination = Worksheets ("Sheet2")'điền trang đích từ mảngĐối với rw = LBound (wsData, 1) Đến UBound (wsData, 1)Đối với col = LBound (wsData, 2) Đến UBound (wsData, 2)ws_Destination.Range ("A1"). Offset (rw, col) .Value = wsData (rw, col)Col tiếp theoRw tiếp theoKết thúc Sub |
Thay đổi kích thước bằng cách sử dụng ReDim và Re-Dim Preserve
Bạn có thể thay đổi kích thước một mảng bằng cách sử dụng ReDim.
1234567891011121314151617 | Thay đổi kích thước phụ2D ()'khai báo mảngDim varArray () dưới dạng Biến thể'khai báo kích thước của mảngReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Kế toán"varArray (1, 1) = "Thư ký"varArray (1, 2) = "Bác sĩ"'khai báo lại kích thước của mảngReDim varArray (0, 1)'tái tạo lại mảngvarArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"Kết thúc Sub |
Khi bạn khai báo lại mảng, bạn sẽ mất bất kỳ dữ liệu nào đã được giữ trước đó trong mảng trừ khi bạn sử dụng Tuyên bố Bảo tồn ReDim.
12345678910111213141516 | Thay đổi kích thước phụ2D ()'khai báo mảng Dim varArray () là Biến thể'khai báo kích thước của mảngReDim varArray (1, 2)varArray (0, 0) = "Mel Smith"varArray (0, 1) = "Fred Buckle"varArray (0, 2) = "Jane Eyre"varArray (1, 0) = "Kế toán"varArray (1, 1) = "Thư ký"varArray (1, 2) = "Bác sĩ"'khai báo lại kích thước của mảngReDim Preverve varArray (1, 3)'điền vào mảng với các giá trị bổ sungvarArray (0, 3) = "Rob Barnes"varArray (1, 3) = "Thợ sửa ống nước"Kết thúc Sub |
Bạn chỉ có thể thay đổi kích thước kích thước cuối cùng của Mảng nếu muốn giữ dữ liệu gốc trong Mảng với Re-Dim Preserve.
Khi bạn nhấp vào gỡ lỗi, lỗi sẽ được đánh dấu cho thấy rằng kích thước đầu tiên trong mảng không giống với kích thước đầu tiên khi kích thước mảng được khai báo ban đầu.