Mảng động trong Excel VBA
Nếu kích thước mảng của bạn tăng lên và bạn không muốn sửa kích thước của mảng, bạn có thể sử dụng từ khóa ReDim. Excel VBA sau đó sẽ tự động thay đổi kích thước của mảng.
Thêm một số số vào cột A.
Đặt một nút lệnh trên trang tính của bạn và thêm các dòng mã sau:
-
Đầu tiên, chúng ta khai báo mảng có tên là số. Đồng thời khai báo hai biến kiểu Integer. Một kích thước được đặt tên và một có tên là i.
Dim numbers() As Integer, size As Integer, i As Integer
Lưu ý: mảng chưa có kích thước. số lượng, kích thước và tôi được chọn ngẫu nhiên ở đây, bạn có thể sử dụng bất kỳ tên nào. Hãy nhớ tham khảo những tên này trong phần còn lại của mã của bạn.
-
Tiếp theo, chúng ta xác định kích thước của mảng và lưu trữ nó vào kích thước biến. Bạn có thể sử dụng chức năng trang tính CountA cho việc này. Thêm dòng mã sau:
size = WorksheetFunction.CountA(Worksheets(1).Columns(1))
-
Bây giờ chúng ta biết kích thước của mảng và chúng ta có thể kích thước lại nó. Thêm dòng mã sau:
ReDim numbers(size)
-
Tiếp theo, chúng ta khởi tạo từng phần tử của mảng. Chúng tôi sử dụng một vòng lặp.
For i = 1 To size numbers(i) = Cells(i, 1).Value Next i
-
Chúng tôi hiển thị phần tử cuối cùng của mảng bằng MsgBox.
MsgBox numbers(size)
-
Thoát khỏi Visual Basic Editor và nhấp vào nút lệnh trên trang tính.
Kết quả:
-
Bây giờ để hiểu rõ tại sao đây được gọi là mảng động, hãy thêm một số vào cột A.
-
Nhấp lại vào nút lệnh.
Kết luận: Excel VBA đã tự động thay đổi kích thước của mảng động này.
-
Khi bạn sử dụng từ khóa ReDim, bạn xóa bất kỳ dữ liệu hiện có nào đang được lưu trữ trong mảng. Ví dụ, thêm các dòng mã sau vào mã đã tạo trước đó:
ReDim numbers(3) MsgBox numbers(1)
Kết quả:
Mảng trống.
-
Khi bạn muốn bảo toàn dữ liệu trong mảng hiện có khi bạn kích thước lại nó, hãy sử dụng từ khóa Bảo tồn.
ReDim Preserve numbers(3) MsgBox numbers(1)
Kết quả: