Cách sử dụng Bộ sưu tập VBA trong Excel
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.
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í.
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.
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.
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”.
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”.
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”)
-
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")
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
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.
Array vs Collection trong VBA
normally.
first.
|
above examples.
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.