Xử lý mảng trong VBA thông qua ví dụ đơn giản - ự học Excel VBA
Trong bài này mình sẽ hướng dẫn cách xử lý mảng trong VBA, đây là kiểu dữ liệu dạng danh sách và được sử dụng rất nhiều, nhất là lập trinh liên quan đến vòng lặp. Vì các bạn không chuyên về lập trình nên mình sẽ giải thích thật đơn sơ nhất có thể nhé. Mảng là tập hợp một nhóm các giá trị có cùng ...
Trong bài này mình sẽ hướng dẫn cách xử lý mảng trong VBA, đây là kiểu dữ liệu dạng danh sách và được sử dụng rất nhiều, nhất là lập trinh liên quan đến vòng lặp.
Vì các bạn không chuyên về lập trình nên mình sẽ giải thích thật đơn sơ nhất có thể nhé. Mảng là tập hợp một nhóm các giá trị có cùng kiểu dữ liệu được lưu trữ trong một danh sách, được đánh dấu để có thể truy xuất đúng phần tử mong muốn.
Ví dụ bạn có một cái tủ đựng sách và có 100 ngăn, trong đó mỗi ngăn được đánh số từ 0 đến 100, mỗi ngăn được dùng để lưu trữ các loại sách, và ta có thể xem cái tủ này là một mảng, còn các ngăn tủ là các phần tử của mảng.
Bạn có thể xem chi tiết hơn về mảng trong Visual Basic tại bài viết này.
1. Khai báo mảng một chiều VBA
Việc khai báo mảng cũng giống như khai báo một biến thông thường, chỉ khác là ta phải khai báo thêm tổng số phần tử của mảng bằng cách đặt nó trong cặp dấu ngoặc ()
.
'Cách 1 : Using Dim Dim arr1() 'không khai báo kích thước 'Cách 2 : có khai báo kích thước Dim arr2(5) 'Khai báo mảng có 5 phần tử 'Cách 3 : sử dụng đối tượng 'Array' Dim arr3 arr3 = Array("apple","Orange","Grapes")
Lưu ý:
- Chỉ mục của mảng bắt đầu từ 0
- Khi bạn chỉ định kích thước của mảng là 5 thì nó sẽ lưu được 6 phần tử, bởi chỉ mục bắt đầu từ 0
- Mảng có thể lưu trữ mọi loại dữ liệu
- Mỗi phần tử trong mảng có thể chứa nhiều kiểu dữ liệu khác nhau
2. Gán giá trị vào mảng một chiều VBA
Để gán giá trị vào mảng thì ta cần quan tâm đến hai yếu tố:
- Dữ liệu cần gán
- Vị trí phần tử cần gán
Ví dụ dưới đây mình khai báo mảng một chiều, sau đó gán giá trị cho chúng, cuối cùng là in dữ liệu ra bằng hộp thoại MsgBox.
Private Sub Constant_demo_Click() Dim arr(5) arr(0) = "1" arr(1) = "VBScript" arr(2) = 100 arr(3) = 2.45 arr(4) = #10/07/2013# arr(5) = #12.45 PM# MsgBox("Giá trị phần tử thứ 0 : " & arr(0)) MsgBox("Giá trị phần tử thứ 1 : " & arr(1)) MsgBox("Giá trị phần tử thứ 2 : " & arr(2)) MsgBox("Giá trị phần tử thứ 3 : " & arr(3)) MsgBox("Giá trị phần tử thứ 4 : " & arr(4)) MsgBox("Giá trị phần tử thứ 5 : " & arr(5)) End Sub
3. Mảng hai chiều VBA
Mảng một chiều rất đơn giản, bạn có thể hiểu nó là một cột hoặc một hàng trong Excel.
Ví dụ cột A gồm các ô: 1, 2, 3, 4, 5, 6 thì
- Tên mảng là cột A
- các ô trong cột A: 1, 2, 3, 4, 5, 6 là các phần tử.
Còn mảng hai chiều thì khác, nó giống như một bảng tính Excel nên được xác định bởi hai chỉ mục.
Ví dụ có bảng tính B2:E7 như sau:
Mỗi phần tử sẽ được xác định bởi hai thông số, đó là chỉ mục hàng và cột: B2, C2, D2, E2, .....
Trên là mình sử dụng bảng tính trong Excel để trình bày cấu trúc của mảng. Thực tế là dữ liệu được lưu trong bộ nhớ của máy tính nên bạn không thể thấy bằng mắt thường được.
4. Khai báo mảng hai chiều VBA
Để khai báo mảng hai chiều ta sử dụng cú pháp sau:
Dim arr(2,3) as Variant
Mình đã khai báo mảng tên là arr gồm 2 hàng và 3 cột. Tuy nhiên thực tế thì lại có 3 hàng và 4 cột vì chỉ mục bắt đầu từ 0.
Ví dụ dưới đây mình vừa khai báo vừa gán dữ liệu cho mảng luôn.
Private Sub Constant_demo_Click() Dim arr(2,3) as Variant ' Khai báo mảng gồm 3 hàng và 4 cột arr(0,0) = "Việt nam" arr(0,1) = "Thái Lan" arr(0,2) = "lào" arr(0,3) = "Campuchia" arr(1,0) = "Indonesia" arr(1,1) = "Malaysia" arr(1,2) = "Myanma" arr(1,3) = "Philippin" arr(2,0) = "Singapore" arr(2,1) = "Dontimo" arr(2,2) = "Brunei" arr(2,3) = "Hàn Quốc" MsgBox("Giá trị của phần tử 0,1 : " & arr(0,1)) MsgBox("Giá trị của phần tử 2,2 : " & arr(2,2)) End Sub
Kết quả sẽ in ra hai giá trị "Thái Lan" và "Brunei".
Trên là cách sử dụng mảng trong VBA ở mức cơ bản nhất. Chúc bạn học tốt!