Mục lục:
- Tuyên bố các mảng
- Các mảng được tạo trong các ví dụ trước đây là tất cả các mảng một chiều. Hãy nghĩ đến các mảng một chiều như một dòng giá trị. Mảng bạn tạo trong VBA có thể có tới 60 thứ nguyên - mặc dù bạn hiếm khi cần nhiều hơn hai hoặc ba chiều trong một mảng. Ví dụ sau khai báo một mảng số nguyên 81 số có hai chiều:
- Bạn cũng có thể tạo các mảng
Video: VBA #8: LÀM VIỆC VỚI FILESYSTEM OBJECT 2025
Hầu hết các mảng hỗ trợ ngôn ngữ lập trình, bao gồm cả VBA. An mảng là một nhóm các biến chia sẻ tên. Bạn tham khảo một biến cụ thể trong mảng bằng cách sử dụng tên mảng và số chỉ mục trong ngoặc đơn. Ví dụ, bạn có thể định nghĩa một mảng của 12 biến chuỗi để giữ tên của các tháng trong năm. Nếu bạn đặt tên mảng MonthNames , bạn có thể tham khảo phần tử đầu tiên của mảng là MonthNames (1), phần tử thứ hai như MonthNames (2), v.v.
Tuyên bố các mảng
Trước khi bạn có thể sử dụng một mảng, bạn phải khai báo nó. Không có ngoại lệ. Không giống với các biến bình thường, VBA rất nghiêm ngặt về quy tắc này. Bạn tuyên bố một mảng với một tuyên bố Dim hoặc Public, giống như bạn khai báo một biến thông thường. Tuy nhiên, bạn cũng cần xác định số lượng các phần tử trong mảng đó. Bạn thực hiện việc này bằng cách chỉ định số thứ tự đầu tiên, từ khoá To, và số thứ tự cuối cùng - tất cả các dấu ngoặc bên trong. Ví dụ sau chỉ ra cách khai báo một mảng gồm 100 số nguyên:
Khi bạn khai báo một mảng, bạn có thể chỉ định chỉ chỉ số trên. Nếu bạn bỏ qua chỉ mục thấp hơn, VBA giả định rằng nó là 0. Vì vậy, cả hai tuyên bố sau tuyên bố cùng một phần tử 101:Dim MyArray (0 đến 100) Như Integer Dim MyArray (100) Như Integer
Nếu bạn muốn VBA giả định rằng 1 (chứ không phải 0) là chỉ mục thấp hơn cho các mảng của bạn, hãy bao gồm câu lệnh sau trong phần Declarations ở đầu module của bạn:
Câu lệnh này bắt buộc VBA sử dụng 1 làm số thứ tự đầu tiên cho các mảng chỉ khai báo chỉ số trên. Nếu tuyên bố này có mặt, các câu lệnh dưới đây giống hệt nhau, cả hai tuyên bố mảng 100 phần tử:
Dim MyArray (1 đến 100) Như Integer Dim MyArray (100) As Integer
Mảng đa chiều
Các mảng được tạo trong các ví dụ trước đây là tất cả các mảng một chiều. Hãy nghĩ đến các mảng một chiều như một dòng giá trị. Mảng bạn tạo trong VBA có thể có tới 60 thứ nguyên - mặc dù bạn hiếm khi cần nhiều hơn hai hoặc ba chiều trong một mảng. Ví dụ sau khai báo một mảng số nguyên 81 số có hai chiều:
Dim MyArray (1 đến 9, 1 đến 9) Là Số nguyên
Bạn có thể nghĩ mảng này là chiếm một ma trận 9 x 9 - hoàn hảo để lưu trữ tất cả số trong một câu đố Sudoku.
Để tham khảo một phần tử cụ thể trong mảng này, bạn cần chỉ định hai số chỉ số (tương tự như dòng "của nó" và "cột" trong ma trận).Ví dụ dưới đây chỉ ra cách bạn có thể gán một giá trị cho một phần tử trong mảng này:
MyArray (3, 4) = 125
Câu lệnh này gán một giá trị cho một phần tử trong mảng. Nếu bạn đang suy nghĩ về mảng theo ma trận 9 x 9, thì sẽ gán 125 cho phần tử nằm trong hàng thứ ba và thứ tư của ma trận.
Dưới đây là cách khai báo một mảng ba chiều, với 1 000 yếu tố:
Dim My3DArray (1 đến 10, 1 To 10, 1 To 10) Là Integer
Bạn có thể nghĩ về một chiều ba chiều mảng như một khối lập phương. Hình dung một mảng có nhiều hơn ba chiều khó hơn.
Mảng động
Bạn cũng có thể tạo các mảng
động . Một mảng động không có một số lượng các yếu tố đặt trước. Khai báo mảng động với một tập các dấu ngoặc đơn: Dim MyArray () As Integer
Trước khi bạn có thể sử dụng mảng này, bạn phải sử dụng câu lệnh ReDim để cho VBA biết có bao nhiêu phần tử. Thông thường, số lượng các phần tử trong mảng được xác định trong khi mã của bạn đang chạy. Bạn có thể sử dụng lệnh ReDim bất kỳ số lần, thay đổi kích thước của mảng như thường xuyên khi cần thiết. Ví dụ sau minh chứng cách thay đổi số lượng các phần tử trong mảng động. Nó thừa nhận rằng biến NumElements chứa một giá trị mà mã của bạn tính toán.
ReDim MyArray (1 Để NumElements)
Khi bạn redimension một mảng bằng cách sử dụng ReDim, bạn xóa bất kỳ giá trị nào được lưu trữ trong các phần tử mảng. Bạn có thể tránh phá hủy các giá trị cũ bằng cách sử dụng từ khóa Bảo tồn. Ví dụ dưới đây chỉ ra cách bạn có thể duy trì các giá trị của mảng khi bạn redimension mảng:
ReDim Preserve MyArray (1 Để NumElements)
Nếu MyArray hiện có mười phần tử và bạn thực hiện câu lệnh trước với NumElements bằng 12, 10 yếu tố đầu tiên vẫn còn nguyên vẹn, và mảng có chỗ cho hai phần tử bổ sung (lên đến con số chứa trong biến NumElements). Nếu NumElements bằng 7 tuy nhiên, bảy yếu tố đầu tiên được giữ lại nhưng ba yếu tố còn lại đáp ứng sự sụp đổ của họ.