1. Khái niệm mảng (array):
Sách tin học đã quá nhiều, các bạn cũng có thể google. Tuy nhiên mình trình bày đơn giản như thế này:
Mảng là một dãy các phần tử có cùng tính chất.
Ví dụ ta có 2000 phần tử là số nguyên. Vậy thì ta sẽ khai báo mảng có kích thước là 2000 phần tử, rồi nạp giá trị số nguyên cho các phần tử của mảng.
Hoặc: Ta có 2000 phần tử là chuỗi ký tự. Vậy thì ta sẽ khai báo mảng có kích thước là 2000 phần tử, rồi nạp giá trị là chuỗi ký tự cho các phần tử của mảng.
Các phần tử chưa được nạp giá trị sẽ có giá trị là rỗng (null).
2. Các thông số cơ bản của mảng:
Kích thước mảng: Là số phần tử của mảng. Ở hình vẽ dưới đây, kích thước mảng là 6. Mảng có 6 phần tử.
// Hình ảnh minh họa trên có sai sót. array size = 6 là đúng.
Kiểu giá trị của mảng: Tùy thuộc vào khai báo. Thông thường hay sử dụng là String (chuỗi ký tự). Hoặc không khai báo, tùy ý xử lý sau.
Chỉ mục của mảng: Phần tử số 0, phần tử số 1, phần tử số 2,... Vậy các số 0,1,2,... là chỉ mục của mảng. Thông thường chỉ mục bắt đầu từ 0 hoặc từ 1.
Ở hình ảnh minh họa ở trên, chỉ mục bắt đầu từ 0 cho tới 5.
Chú ý, trong VBA chúng ta dùng dấu ngoặc tròn để thể hiện phần tử mảng. Ví dụ arr(5) là phần tử mảng ở chỉ mục số 5.
Chương trình trên có kích thước được khai báo là từ 0 tới 5, tức kích thước mảng là 6. Chúng có kiểu giá trị là số nguyên integer.
Ta chú ý tới Lbound, là chỉ số nhỏ nhất của mảng, ở code trên, chỉ số này sẽ là 0.
Ubound là chỉ số lớn nhất của mảng, ở code này, chỉ số này sẽ là 5.
Như vậy kích thước mảng theo toán học sẽ tính bằng công thức:
Ubound - Lbound + 1
3. Dẫn giải qua các ví dụ:
Ví dụ số 1:
Kết quả của chương trình như sau:
Ở kết quả trên, tôi đã cho các bạn thấy Lbound được tính ra là 0 (chỉ số nhỏ nhất của mảng), Ubound là 5 (chỉ số lớn nhất của mảng).
Bây giờ câu hỏi đặt ra là: Các phần tử của mảng nếu chưa được nạp giá trị thì nó có giá trị mặc định là bao nhiêu?
Ta sẽ chặn chương trình tại vị trí nạp phần tử mảng số 3.
Như vậy câu trả lời là: Với dạng khai báo là số nguyên (integer), giá trị mặc định là 0. Do đó nếu chưa được nạp giá trị thì nó có giá trị là 0.
Nếu mảng được khai báo là chuỗi kí tự, và khi chưa được nạp giá trị nó sẽ như thế nào?
Ví dụ số 2:
Chúng ta cùng xem kết quả dưới đây:
Như vậy kết quả là chuỗi kí tự rỗng "". Chúng ta hãy chú ý điều này để có cách xử lý phù hợp trong các chương trình khi sử dụng mảng.
Sách tin học đã quá nhiều, các bạn cũng có thể google. Tuy nhiên mình trình bày đơn giản như thế này:
Mảng là một dãy các phần tử có cùng tính chất.
Ví dụ ta có 2000 phần tử là số nguyên. Vậy thì ta sẽ khai báo mảng có kích thước là 2000 phần tử, rồi nạp giá trị số nguyên cho các phần tử của mảng.
Hoặc: Ta có 2000 phần tử là chuỗi ký tự. Vậy thì ta sẽ khai báo mảng có kích thước là 2000 phần tử, rồi nạp giá trị là chuỗi ký tự cho các phần tử của mảng.
Các phần tử chưa được nạp giá trị sẽ có giá trị là rỗng (null).
2. Các thông số cơ bản của mảng:
Kích thước mảng: Là số phần tử của mảng. Ở hình vẽ dưới đây, kích thước mảng là 6. Mảng có 6 phần tử.
Bạn cần đăng nhập để thấy đính kèm
// Hình ảnh minh họa trên có sai sót. array size = 6 là đúng.
Kiểu giá trị của mảng: Tùy thuộc vào khai báo. Thông thường hay sử dụng là String (chuỗi ký tự). Hoặc không khai báo, tùy ý xử lý sau.
Chỉ mục của mảng: Phần tử số 0, phần tử số 1, phần tử số 2,... Vậy các số 0,1,2,... là chỉ mục của mảng. Thông thường chỉ mục bắt đầu từ 0 hoặc từ 1.
Ở hình ảnh minh họa ở trên, chỉ mục bắt đầu từ 0 cho tới 5.
Chú ý, trong VBA chúng ta dùng dấu ngoặc tròn để thể hiện phần tử mảng. Ví dụ arr(5) là phần tử mảng ở chỉ mục số 5.
Mã:
Sub vidu1()
Dim arr(0 To 5) As Integer
Dim n1 As Integer
Dim n2 As Integer
arr(0) = 19
arr(1) = 2019
arr(2) = 2015
arr(3) = 20
arr(4) = 21
arr(5) = 22
n1 = LBound(arr)
n2 = UBound(arr)
End Sub
Ta chú ý tới Lbound, là chỉ số nhỏ nhất của mảng, ở code trên, chỉ số này sẽ là 0.
Ubound là chỉ số lớn nhất của mảng, ở code này, chỉ số này sẽ là 5.
Như vậy kích thước mảng theo toán học sẽ tính bằng công thức:
Ubound - Lbound + 1
3. Dẫn giải qua các ví dụ:
Ví dụ số 1:
Kết quả của chương trình như sau:
Bạn cần đăng nhập để thấy đính kèm
Ở kết quả trên, tôi đã cho các bạn thấy Lbound được tính ra là 0 (chỉ số nhỏ nhất của mảng), Ubound là 5 (chỉ số lớn nhất của mảng).
Bây giờ câu hỏi đặt ra là: Các phần tử của mảng nếu chưa được nạp giá trị thì nó có giá trị mặc định là bao nhiêu?
Ta sẽ chặn chương trình tại vị trí nạp phần tử mảng số 3.
Bạn cần đăng nhập để thấy đính kèm
Như vậy câu trả lời là: Với dạng khai báo là số nguyên (integer), giá trị mặc định là 0. Do đó nếu chưa được nạp giá trị thì nó có giá trị là 0.
Nếu mảng được khai báo là chuỗi kí tự, và khi chưa được nạp giá trị nó sẽ như thế nào?
Ví dụ số 2:
Mã:
Sub vidu2()
Dim arr(0 To 5) As String
Dim n1 As Integer
Dim n2 As Integer
arr(0) = "hay tham gia website nhe"
arr(1) = "tuhocvba.net"
arr(2) = "chuc cac ban"
arr(3) = "luon tim duoc"
arr(4) = "nhung bai hoc"
arr(5) = "bo ich"
n1 = LBound(arr)
n2 = UBound(arr)
End Sub
Bạn cần đăng nhập để thấy đính kèm
Như vậy kết quả là chuỗi kí tự rỗng "". Chúng ta hãy chú ý điều này để có cách xử lý phù hợp trong các chương trình khi sử dụng mảng.