VBA - Mảng

Chúng tôi biết rất rõ rằng một biến là một vùng chứa để lưu trữ một giá trị. Đôi khi, các nhà phát triển có thể nắm giữ nhiều giá trị trong một biến tại một thời điểm. Khi một loạt các giá trị được lưu trữ trong một biến duy nhất, thì nó được gọi làarray variable.

Khai báo mảng

Mảng được khai báo giống như cách khai báo biến ngoại trừ việc khai báo biến mảng sử dụng dấu ngoặc đơn. Trong ví dụ sau, kích thước của mảng được đề cập trong dấu ngoặc.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Mặc dù, kích thước mảng được chỉ định là 5, nó có thể chứa 6 giá trị khi chỉ mục mảng bắt đầu từ ZERO.

  • Chỉ số mảng không được âm.

  • Mảng VBScript có thể lưu trữ bất kỳ loại biến nào trong một mảng. Do đó, một mảng có thể lưu trữ một số nguyên, chuỗi hoặc ký tự trong một biến mảng duy nhất.

Gán giá trị cho một mảng

Các giá trị được gán cho mảng bằng cách chỉ định một giá trị chỉ số mảng dựa trên từng giá trị được gán. Nó có thể là một chuỗi.

Thí dụ

Thêm một nút và thêm chức năng sau.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Khi bạn thực hiện hàm trên, nó sẽ tạo ra kết quả sau.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Mảng đa chiều

Mảng không chỉ giới hạn ở một thứ nguyên, tuy nhiên, chúng có thể có tối đa 60 thứ nguyên. Mảng hai chiều là mảng được sử dụng phổ biến nhất.

Thí dụ

Trong ví dụ sau, một mảng nhiều chiều được khai báo với 3 hàng và 4 cột.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Khi bạn thực hiện hàm trên, nó sẽ tạo ra kết quả sau.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Tuyên bố ReDim

Câu lệnh ReDim được sử dụng để khai báo các biến mảng động và cấp phát hoặc phân bổ lại không gian lưu trữ.

Cú pháp

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Mô tả về Thông Số

  • Preserve - Một tham số tùy chọn được sử dụng để bảo toàn dữ liệu trong một mảng hiện có khi bạn thay đổi kích thước của thứ nguyên cuối cùng.

  • Varname - Một tham số bắt buộc, biểu thị tên của biến, phải tuân theo các quy ước đặt tên biến chuẩn.

  • Subscripts - Một tham số bắt buộc, cho biết kích thước của mảng.

Thí dụ

Trong ví dụ sau, một mảng đã được xác định lại và sau đó các giá trị được giữ nguyên khi kích thước hiện có của mảng được thay đổi.

Note - Khi thay đổi kích thước một mảng nhỏ hơn ban đầu, dữ liệu trong các phần tử bị loại bỏ sẽ bị mất.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Khi bạn thực hiện hàm trên, nó sẽ tạo ra kết quả sau.

XYZ
41.25
22
3
4
5
6
7

Phương thức mảng

Có nhiều hàm sẵn có trong VBScript giúp các nhà phát triển xử lý các mảng một cách hiệu quả. Tất cả các phương thức được sử dụng cùng với mảng được liệt kê bên dưới. Vui lòng nhấp vào tên phương thức để biết chi tiết về nó.

Sr.No. Mô tả chức năng
1 LBound

Một Hàm, trả về một số nguyên tương ứng với chỉ số con nhỏ nhất của các mảng đã cho.

2 UBound

Một Hàm, trả về một số nguyên tương ứng với chỉ số con lớn nhất của các mảng đã cho.

3 Tách ra

Hàm, trả về một mảng có chứa một số giá trị được chỉ định. Phân chia dựa trên dấu phân cách.

4 Tham gia

Một Hàm, trả về một chuỗi có chứa một số chuỗi con được chỉ định trong một mảng. Đây là một chức năng hoàn toàn ngược lại với Phương pháp tách.

5 Bộ lọc

Một Hàm, trả về một mảng dựa trên 0 chứa một tập hợp con của một mảng chuỗi dựa trên một tiêu chí bộ lọc cụ thể.

6 IsArray

Một Hàm, trả về một giá trị boolean cho biết biến đầu vào có phải là một mảng hay không.

7 Xóa

Một hàm, khôi phục bộ nhớ được cấp phát cho các biến mảng.