Hướng dẫn này sẽ dạy bạn cách lặp qua Mảng trong VBA.
Có hai cách chính để lặp qua Mảng bằng VBA:
- Cho mỗi vòng lặp - Vòng lặp For Each sẽ lặp qua từng mục trong mảng.
- Cho vòng tiếp theo - Vòng lặp For Next sẽ lặp qua các vị trí bắt đầu và kết thúc được chỉ định của mảng (Chúng ta có thể sử dụng Hàm UBound và LBound để lặp qua toàn bộ mảng).
Đối với mỗi mục trong mảng
Các Cho mỗi vòng lặp cho phép bạn lặp qua từng phần tử của mảng.
12345678910111213141516171819 | Sub LoopForArrayStatic ()'khai báo một mảng biến thểDim strNames (1 đến 4) dưới dạng chuỗi'điền mảngstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'khai báo một biến thể để giữ phần tử mảngLàm mờ mục dưới dạng biến thể'lặp qua toàn bộ mảngĐối với từng mục trong strNames'hiển thị phần tử trong cửa sổ gỡ lỗi.Mục Debug.PrintVòngKết thúc Sub |
Thủ tục trên sẽ lặp qua tất cả các tên trong mảng.
Cho vòng tiếp theo
Vòng lặp For Next sẽ lặp qua từng mục tại một vị trí bắt đầu và kết thúc được chỉ định của mảng.
Vòng qua một phần của mảng
Bạn có thể chỉ định thủ công vị trí bắt đầu và kết thúc cho vòng lặp của mình. Điều này có thể phù hợp nếu bạn biết kích thước mảng của mình và / hoặc bạn chỉ muốn lặp lại một phần của mảng.
12345678910111213141516 | Sub LoopForNextStatic ()'khai báo một mảng biến thểDim strNames (1 đến 4) dưới dạng chuỗi'điền mảngstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'khai báo một số nguyênDim i As Integer'vòng lặp từ vị trí 2 đến vị trí 3 của mảngĐối với i = 2 đến 3'hiển thị tên trong cửa sổ ngay lập tứcDebug.Print strNames (i)Tiếp theo tôiKết thúc Sub |
Trong ví dụ trên, chúng ta đã lặp qua vị trí 2 và 3 của mảng. Cửa sổ ngay lập tức sẽ trả về các tên như sau.
Vòng qua toàn bộ mảng
Tiếp theo, chúng ta sẽ sử dụng các hàm UBound và LBound để lặp lại toàn bộ một mảng. Điều này cực kỳ hữu ích nếu vị trí bắt đầu và kết thúc của mảng có thể thay đổi (ví dụ: Mảng động):
123456789101112131415161718 | Sub LoopForNextDynamic ()'khai báo một mảng biến thểDim strNames () Dưới dạng chuỗi'khởi tạo mảngReDim strNames (1 đến 4)'điền vào mảngstrNames (1) = "Bob"strNames (2) = "Peter"strNames (3) = "Keith"strNames (4) = "Sam"'khai báo một số nguyênDim i As Integer'vòng lặp từ giới hạn dưới của mảng đến giới hạn trên của mảng - toàn bộ mảngĐối với i = LBound (strNames) Đến UBound (strNames)'hiển thị tên trong cửa sổ ngay lập tứcDebug.Print strNames (i)Tiếp theo tôiKết thúc Sub |