image

集合是一种数据类型,它像数组一样保存存储对象(但有所不同)。在编写基本VBA代码时,您必须使用过工作簿,工作表,范围等。它们都是集合。在本文中,我们将学习VBA集合。

什么是VBA中的集合?

集合是一种数据类型,它与数组一样存储相似类型的对象。但是与数组不同,它的大小可以根据需要动态增加或减少。

您可以添加,查找,获取和删除集合中的项目。

与数组不同,您不能更改集合中项目的值。如果需要,可以将数组用作集合中的项目。

集合具有4个与之关联的属性或方法。

Collection.Add

Collection.Item

Collection.Count

Collection.Remove

通过本文,将探索这些属性的使用。

如何在VBA中创建集合?

集合是一个对象,因此有必要对其进行声明和初始化。与VBA中的任何其他对象一样,在VBA中有两种创建集合的方法。

1.即时创建

Dim items as new Collection

在上述方法中,立即创建了对象。您可以立即根据需要使用此集合。

image

2.延迟创建

Dim items as Collection

Set items = New Collection

在此方法中,首先创建集合的引用,并在需要时使用集合对象进行初始化。使用此方法,您可以选择根据某些条件创建集合。

image

将项目添加到集合(Collection.Add)

我们使用Add方法将新项目添加到集合中。

items.Add "Apples"

上面的代码将在集合中添加字符串“ Apples”。

items.Add 1.4

上面的代码会将双1.4添加到集合的末尾。

image

我们还可以定义这些项目的键。这些键可用于访问集合中的项目。

image

在现有项目之前或之后在集合中插入项目

Add方法将新项目添加到集合的末尾。 add方法具有四个参数。

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

第一个参数是必要的。它是对象或要添加到集合中的对象。其余参数是可选的。我们将在本节中看到这些参数的用法。

如果要在某个垂直索引/键之前或之后添加某些项目,则可以使用Add方法的Before和After参数。

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

'Or

items.Add True, Before:="cnst"

这两行都将在VBA集合项中的键“ cnst”之前插入一个布尔值。

要在垂直索引/项目/键之后插入项目,我们使用Add方法的After参数。

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

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

上面的行将在键“ b”之后插入键“ m”的“ Mango”。

image

注意:*项目的键应唯一。集合中已存在的任何密钥将不被接受。 VBA将返回错误“密钥已与此集合的元素相关联”。

image

我们可以利用这个优势,从集合中获取唯一列表。

访问集合的项目(Collection.Item)

有两种访问集合项的方法。 。 CollectionName(“索引/键”)

。 CollectionName.Item(“ index / key”)

例如,要访问索引为1且键为“ apl”的集合项*中的成员,我可以使用以下任何VBA代码。

Debug.Print items.Item(1)

--

Debug.Print items(1)

--

Debug.Print items.Item("apl")

--

Debug.Print items("apl")

image

如何获取集合中的项目计数? (Collection.Count)

要获取集合中对象或项目的总数,我们使用集合的.Count函数。 .Count方法返回集合中的项目总数。

items.Count

上面的行将给出集合具有的对象数。

如何访问集合的所有项目?

在VBA中访问集合的所有项目的唯一方法是循环。

我们遍历集合的每个项目以访问它们。为此,我们使用for循环。 for-each循环被认为是访问集合对象的最快,最干净的方法。

遍历VBA中的集合

有多种方法可以在VBA中循环浏览集合。对于每个循环,我们将使用最优雅的方式来遍历整个集合。

仅使用此行VBA代码就无法遍历集合的每个项目。

For Each itm In items

Debug.Print itm

Next itm

image

从集合中删除项目(Collection.Remove)

要从vba集合中删除项目,我们可以使用Remove方法。 remove方法采用一个参数。它可以是项目的索引或键(如果有)。

items.Remove (1) 'using index

--

items.Remove 1

--

items.Remove ("apl") 'using key

--

items.Remove "apl"

在VBA中删除收藏集

好吧,您无法在vba中删除集合。但是,可以通过将其再次设置为新集合来删除该集合的所有项目。

Set items = New Collection

这行代码将在商品地址上创建一个新集合。

因此,我们的收藏将被清空。

image

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.

是的,这是收藏的基础。 VBA收集在Office工具中有很多好处和用途。我们将一起探索它们。直到那时,如果您对集合有任何疑问或与Excel / VBA有关的任何内容,请在下面的注释部分中进行填写。