image

Bộ sưu tập là một kiểu dữ liệu lưu trữ các đối tượng giống như mảng (nhưng khác). Trong khi viết mã VBA cơ bản, bạn phải sử dụng Workbooks, Worksheets, Rangees, v.v. Tất cả chúng đều là bộ sưu tập. Trong bài này, chúng ta sẽ tìm hiểu về các tập hợp VBA.

Bộ sưu tập trong VBA là gì?

Tập hợp là kiểu dữ liệu lưu trữ kiểu đối tượng tương tự giống như mảng. Nhưng không giống như mảng, kích thước của nó có thể được tăng hoặc giảm động theo yêu cầu.

Bạn có thể thêm, tìm, tìm nạp và xóa các mục khỏi bộ sưu tập.

Không giống như mảng, bạn không thể thay đổi giá trị của các mục trong bộ sưu tập. Nếu bạn muốn như vậy, hãy sử dụng mảng làm mục trong bộ sưu tập.

Một tập hợp có 4 thuộc tính hoặc phương thức được liên kết với nó.

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

Qua bài viết này, will sẽ khám phá công dụng của các thuộc tính này.

Làm thế nào để tạo một Bộ sưu tập trong VBA?

Tập hợp là một đối tượng do đó cần phải khai báo và khởi tạo nó. Giống như bất kỳ đối tượng nào khác trong VBA, có hai phương pháp tạo tập hợp trong VBA.

1. Tạo tức thì

Dim items as new Collection

Trong phương thức trên, đối tượng được tạo ngay lập tức. Bạn có thể bắt đầu sử dụng bộ sưu tập này cho các yêu cầu của mình ngay lập tức.

image

2. Quá trình tạo bị trì hoãn

Dim items as Collection

Set items = New Collection

Trong phương pháp này, đầu tiên chúng ta tạo một tham chiếu của bộ sưu tập và khi được yêu cầu, chúng ta khởi tạo với một đối tượng bộ sưu tập. Sử dụng phương pháp này, bạn có thể chọn tạo bộ sưu tập dựa trên một số tiêu chí.

image

Thêm các mục vào bộ sưu tập (Collection.Add)

Chúng tôi sử dụng phương pháp Thêm để thêm các mục mới vào bộ sưu tập.

items.Add "Apples"

Đoạn mã trên sẽ thêm chuỗi “Apples” trong bộ sưu tập.

items.Add 1.4

Đoạn mã trên sẽ thêm đôi 1,4 vào cuối bộ sưu tập.

image

Chúng tôi cũng có thể xác định khóa cho các mục này. Các phím này có thể được sử dụng để truy cập các mục trong bộ sưu tập.

image

Chèn các mục trong bộ sưu tập trước hoặc sau một mục hiện có

Phương thức Thêm sẽ thêm các mục mới vào cuối bộ sưu tập. Phương thức add có bốn tham số.

Add(item,[Key],[Before],[After])

Lập luận đầu tiên là cần thiết. Đây là đối tượng hoặc đối tượng mà bạn muốn thêm vào bộ sưu tập. Các đối số còn lại là tùy chọn. Chúng ta sẽ xem cách sử dụng các đối số này trong phần này.

Nếu chúng ta muốn thêm một số mục vào trước hoặc sau một số chỉ mục / khóa perticular, thì chúng ta sử dụng tham số Before và After của phương thức Add.

items.Add True, "b", "cnst"

'Or

items.Add True, Before:="cnst"

Cả hai dòng sẽ chèn một giá trị boolean trước khóa “cnst” trong các mục Bộ sưu tập VBA.

Để chèn một mục sau một chỉ mục / mục / khóa perticular, chúng ta sử dụng tham số After của phương thức Add.

'inserting "Mango" with key "m" after key "cnst"

items.Add "Mango", Key:="m", after:="b"

Dòng trên sẽ chèn “Mango” với phím “m” sau phím “b”.

image

Lưu ý: * Chìa khóa của các mục phải là duy nhất. Bất kỳ khóa nào đã tồn tại trong bộ sưu tập sẽ không được chấp nhận. VBA sẽ trả về lỗi “khóa đã được liên kết với một phần tử của bộ sưu tập này”.

image

Chúng tôi có thể sử dụng điều này cho lợi thế của chúng tôi có được một danh sách duy nhất từ ​​bộ sưu tập.

Truy cập các mục của Bộ sưu tập (Collection.Item)

Có hai phương pháp truy cập các mục của một bộ sưu tập. . CollectionName (“index / key”)

  1. CollectionName.Item (“index / key”)

Ví dụ: để truy cập một thành viên trong các mục bộ sưu tập * ở chỉ mục 1 và khóa “apl”, tôi có thể sử dụng bất kỳ mã VBA nào dưới đây.

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

Làm thế nào để nhận được số lượng các mục trong một bộ sưu tập? (Collection.Count)

Để có được tổng số đối tượng hoặc mục trong một bộ sưu tập, chúng tôi sử dụng hàm. Số lượng của bộ sưu tập. Phương thức .Count trả về tổng số mục trong bộ sưu tập.

items.Count

Dòng trên sẽ cung cấp số lượng các đối tượng mà bộ sưu tập có.

Làm thế nào để truy cập tất cả các mục của một bộ sưu tập?

Cách duy nhất để truy cập tất cả các mục của bộ sưu tập trong VBA là các vòng lặp.

Chúng tôi lặp lại từng mục trong bộ sưu tập để truy cập chúng. Đối với điều đó chúng tôi sử dụng vòng lặp for. Vòng lặp for-each được coi là cách nhanh nhất và sạch nhất để truy cập các đối tượng bộ sưu tập.

Looping Through a Collection trong VBA

Có nhiều cách khác nhau để lặp qua bộ sưu tập trong VBA. Chúng tôi sẽ sử dụng thanh lịch nhất cho mỗi vòng lặp để lặp lại qua bộ sưu tập.

Quá trình lặp qua từng mục của bộ sưu tập chỉ cần sử dụng dòng mã VBA này.

For Each itm In items

Debug.Print itm

Next itm

image

Xóa các mục khỏi bộ sưu tập (Collection.Remove)

Để xóa một mục khỏi bộ sưu tập vba, chúng ta có thể sử dụng phương pháp Xóa. Phương thức remove nhận một đối số. Nó có thể là chỉ mục hoặc khóa của mục (nếu có).

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

Xóa bộ sưu tập trong VBA

Bạn không thể xóa bộ sưu tập trong vba. Tuy nhiên, bạn có thể xóa tất cả các mục của bộ sưu tập đó bằng cách đặt lại thành bộ sưu tập mới.

Set items = New Collection

Dòng mã này sẽ tạo một bộ sưu tập mới trên địa chỉ của các mặt hàng.

Do đó bộ sưu tập của chúng tôi sẽ được làm trống.

image

Array vs Collection trong VBA

  1. Array size is predefined. The size of array can not be changed

normally.

  1. Array’s can hold only same type of data and the type must be declared

first.

  1. Indexing in array starts from 0

  2. Array members does not have any associated key.

  3. Arrays are mutable. You can change the values of its members.

  1. Collection’s size changes as items are added or removed.

  2. A collection can hold any number of data type. As you have seen in the

above examples.

  1. Indexing in VBA Collection starts from 1.

  2. Collection members can have keys associated with.

  3. Collections are immutable. You cannot change values of its member

directly.

Vì vậy, các bạn, đây là những điều cơ bản về bộ sưu tập. Có rất nhiều lợi ích và cách sử dụng bộ sưu tập VBA trong các công cụ văn phòng. Chúng ta sẽ cùng nhau khám phá chúng. Cho đến lúc đó, nếu bạn có bất kỳ câu hỏi nào về bộ sưu tập hoặc bất kỳ thứ gì liên quan đến Excel / VBA, hãy đưa ra phần nhận xét bên dưới.