VBA教程:数组、集合和字典

时间:2023-10-10 01:07:57 

之前的一些文章,我们详细解了集合、数组和字典这三种常用的数据结构。在本文中,我们简单小结一下,看看它们之间有哪些区别,以巩固所学的知识。

存储的类型

数组

数组是一组具有相同名称的同类元素。可用来存储多个相同类型的变量。

集合

集合可以用来存储不同的数据类型。

字典

字典可以用来存储不同的数据类型。

注意,在数组中,可以存储用户定义类型。然而,不能在字典或集合中存储用户定义类型。

变量声明

数组

在声明数组变量时,可以指定数组的大小,如:

Dim MyArray(5) As Integer

也可以先不指定数组的大小:

Dim MyArray() As Integer

在使用之前,须指定其大小:

ReDim MyArray(5)

集合

可以先声明集合变量:

Dim col As Collection

在需要使用该集合前创建集合对象:

Set col = New Collection

也可以在声明的同时创建集合对象:

Dim col As New Collection

字典

创建字典对象,先要设置对库文件Microsoft Scripting Runtime的引用。可以编写声明字典对象变量的代码如下:

Dim dict As New Dictionary

或者:

Dim dict As Dictionary

Set dict = New Dictionary

对元素赋值

1.不能对集合中已有元素重新赋值。

2.可以修改字典元素的值。在给指定键的字典元素赋值时,如果指定键的字典元素已存在,则会修改该元素的值。如果指定键的字典元素不存在,则会添加新字典元素。

3.集合、字典都是对象,在返回整个对象时,应使用Set语句。

对元素的访问

数组、集合、字典的存储结构不同,决定了访问其元素的差异。

数组

每个元素放置在固定的位置,我们需要知道其索引,来访问它。例如:

Dim MyArray(5) As Integer

Dim i As Integer

For i = 0 To 5

MyArray(i) = i

Nexti

‘访问第2个元素

Debug.Print MyArray(1)

数组的索引值默认从0开始。

集合

下面的代码先声明集合对象,然后在添加元素项时定义键值:

Dim col As Collection

Dim rng As Excel.Range

Dim sRangeName As String

Set col = New Collection

sRangeName= “RangeName”

Set rng = Range(sRangeName)

col.Add rng, sRangeName

此时,想从该集合中获取特定元素项时,可以指定其位置(索引值),或者使用键值。如果你知道其是第一个添加到集合中的且位置没有变化,可以使用索引值:

col.Item(1)

集合的索引值基于1。也可以使用键值:

col.Item(sRangeName)

集合的索引值从1开始。

字典

字典中有唯一标识元素的键,我们只需要使用这个键来访问元素,而不需知道其具体的存放位置。

下面的代码添加对象到字典中,其语法与添加元素项到集合中非常相似,只是键和元素参数的位置相反:

Dim dict As Scripting.Dictionary

Dim rng As Excel.Range

Dim sRangeName As String

Set dict = New Scripting.Dictionary

sRangeName= “RangeName”

Set rng = Range(sRangeName)

dict.Add sRangeName, rng

可以使用下面的语句来获取指定键所在的元素项:

dict.Item(sRangeName)

添加元素

添加元素时,集合与字典的参数位置刚好相反,例如:

‘在集合中添加元素

col.Add Item:=6, Key:=”东区”

‘在字典中添加元素

dict.Add Key:=”东区”,Item:=6

然而,对于集合,没有内置的方法来检查是否已存在指定的键,但是可以使用Exists方法检查字典中是否存在指字键。

什么时候使用

在编程时,通常要求我们能创建一个对象,能够存放一组相关的值,并且能够通过该对象便捷地处理存储的值,数组、集合、字典都能实现这个目的。

数组

当有许多同类型的数据需要逐一处理时,可以使用数组。然而,数组的大小在使用之前通常是固定的,因此在知道数据数量的前提下使用数组。

集合

集合可任意添加或删除元素,因此对于数量变化的数据使用集合更好。相对于数组,集合更容易使用一些,特别是添加元素、遍历元素。然而,集合是只读的,你可以添加或删除集合中的元素,但不能修改其值。

字典

有一系列数据,但是需要获取不重复元素值时,可以使用字典。

字典与集合

集合是一种很好的数据结构,在Excel对象模型中几乎所有的容器结构都是使用集合,例如:Workbooks、Worksheets等。

然而,字典有更多的内置方法,使得其使用比集合更方便。特别是下列3个方法:

1.Exists方法:用来判断字典中是否存在指定的键。(如果要在集合中检查指定的键是否存在,则需要额外编写一段代码来完成)

2.Keys方法:返回一个数组,包含字典中所有的键。(同样,集合中实现相同的目的需要编写遍历和填充的代码)

3.RemoveAll方法:清除字典中所有的元素。

此外,正如前面提到的,字典允许我们修改键和值。并且,由于Dictionary对象使用了散列表和一些先进的排序和索引算法,因此字典的运行速度也快于集合的速度。

数组与集合

与使用数组相比,使用集合对象更便于访问和维护:

1.集合成员可以添加在一个已经存在成员的前面或后面,这取决于该已有成员的键值或索引值。

2.集合成员可以通过它们的键值或索引值访问。

3.集合成员可以通过它们的键值或索引值删除。但是,利用一个索引值删除多个成员时,应该从后面开始删除,即从索引值较高的成员到索引值较低的成员,因为每次删除成员后集合就要重新建立索引。

数组与字典、集合

正如前面提到的,在数组中,可以存储用户定义类型。然而,不能在字典或集合中存储用户定义类型。

标签:excel图表制作,excel常用函数,excel数据透视表,Excel教程
0
投稿

猜你喜欢

  • 爱奇艺出现错误代码504怎么办?

    2023-03-08 06:30:59
  • 使用右侧的快捷键Ctrl+Shift快速切换输入法不错过需要的输入法

    2023-04-24 10:10:50
  • 到底该装windows8系统32位还是64位系统(根据配置选择版本)

    2022-12-07 13:43:29
  • Win11被360设置护眼模式怎么更改?

    2023-10-02 03:22:33
  • 计算机内部数据加工处理和传送的形式是什么

    2023-04-11 08:15:29
  • Win10怎么设置锁屏密码

    2023-04-02 21:15:48
  • 如何用U盘工具安装Win10系统

    2023-03-05 05:21:58
  • 如何合并excel中的内容教程

    2022-04-01 01:49:21
  • 搜狗五笔输入法怎么打生僻字?

    2023-05-29 07:38:16
  • Win10系统易升如何彻底关闭?Win10系统易升彻底关闭操作方法

    2022-12-26 11:54:40
  • 通过小白装机工具安装win10系统方法

    2022-05-09 03:17:26
  • Win10系统禁用摄像头?对Windows Hello无效

    2023-04-18 18:15:48
  • windows10升级文件夹$Windows.~BT是什么/在哪里?

    2022-10-06 15:05:14
  • OFFSET函数使用示例:大量数据中查找指定数据

    2023-05-06 03:22:05
  • 怎么使用iOS版WPS共享播放

    2023-02-27 10:17:47
  • 艺龙旅行如何使用红包?艺龙旅行红包使用方法

    2023-01-01 06:34:19
  • 联想win10我的电脑图标怎么调出来?

    2022-08-30 02:31:48
  • 如何用Navicat Premium连接并创建数据库?

    2023-05-31 03:31:23
  • Win10截图快捷键怎么改?

    2023-09-07 22:13:55
  • win7重装系统图文教程

    2023-03-17 17:36:05
  • asp之家 电脑教程 m.aspxhome.com