VBA中数组、集合和字典(一)

您所在的位置:网站首页 声明list集合 VBA中数组、集合和字典(一)

VBA中数组、集合和字典(一)

2023-03-07 17:22| 来源: 网络整理| 查看: 265

大家好,我是中药党。

关于VBA中的数组、字典和集合几个概念,很多小伙伴在使用的时候很容易混淆,在运用过程中的情景也不是很明确,这段时间就和大家一块再学习熟悉一下,加深这方面的基础。

一、先说概念

1.数组(Array)

只要学过计算机的,应该都对数组不陌生,数组就是一组相同类型的数据的有序集合,通过索引来访问数组中的各个元素。

2.集合(Collection)

Collection集合是我们在使用类时最常用到的对象。一个Collection对象代表一组相关的项目。集合是一组数据信息,存放于一个一维数组中,以便用户随时访问、增添、删除同类信息。当你事先不知道要存放数据的个数,或者你需要一种比数组下标存取机制更灵活的方法时,你就需要用到集合类。

3.字典(Dictionary)

字典不是VBA内置的类型,VBA中的字典是微软Windows脚本语言中的一个很有用的对象,字典是由具有唯一性的关键字(Key)和它的项(Item)组成的集合,Key相当于字典中的每个字,具有不重复性,Item相当于对字典中每个字对应的解释。

小结一下:通过概念来看,数组、字典和集合相同点都是存储一组数据,不同的是数组可以有一维数组、二维数组或者多维数组,集合和字典看起来就像一个一维数组,只不过集合里每个元素存储一个对象,字典里每个元素是存储一对值(Key和Item)

二、声明语法

1.数组

a.静态数组。所谓静态数组,即它的长度是固定不可变的,在括号中注明数组的起始索引和结束索引即可,声明方法如下:

其中a、b、c、d均为数字,表示数据的索引起始值和末尾值。

也可以只写一个数字,则此时数组使用默认索引,从0开始,数字表示它的最大下标索引。如下图:

b.动态数组。如果在定义时并不知道需要使用的数组的长度是多少,则可以定义它为动态数组。定义动态数组,只需要在括号里面留空即可,如下图:

待确定了数组的长度之后,可以使用ReDim来重新定义数组,如下图:

2.集合

集合的声明就单一很多了,因为集合和数组一样是VBA的内置对象,就可以直接用Dim声明,先看一下它的声明方法,如下图:

但是这样声明的list集合还未分配内存空间,还不能直接使用集合的属性和方法,必须为list集合分配一个New Collection内存空间,才可以使用集合的属性和方法,如下图:

我们看一下“本地窗口”中变量的值,在逐行运行代码时的状态,当运行第一行声明代码时,list的值为Nothing,可以理解为list存储的内容未知,当为list分配内存空间后,list的值就是空,可以理解为已知道list存的内容,只不过存储的内容为空而已,如下图:

所以就有很多初学者会问如下这样的问题,下图的声明①声明②有何不同,为什么声明①会报错,而声明②就不会报错:

现在就很容易解释了,声明①仅仅声明了list可以指向一个集合,但未给list分配指向一个内存空间,所以在未分配内存空间的时候就无法使用集合的属性和方法,声明②声明了list2可以指向一个集合,同时也为list2分配了一个新的内存空间,已分配存储空间的集合变量才能使用集合的方法和属性

3.字典

字典不是VBA内置的类型,它是Windows脚本语言的类型。所以声明字典的方法就和VBA内置对象不同,它有两种方法声明,一种是前期绑定声明,一种是后期绑定声明。

a.前期绑定

前期绑定需要在工具菜单的引用对话框下首先引用对象库,在编译期完成绑定,这样的优点是在编码过程中可以直接看到字典对象引用的方法和属性的提示,缺点就是移植性差,如果换一个计算机运行VBA代码,也必须在新计算机上引用对象库。方法如下:在VBE菜单中,选择“工具-引用”,在弹出的对话框中选择中边的“浏览”,此时会打开Windows系统的驱动目录(32位系统请打开C:\Windows\System32)或者(64位系统请打开C:\Windows\SysWOW64),然后找到scrrun.dll,确定即可。确定后可以检查一下“Microsoft Scripting Runtime”是否已经勾选,如下图:

添加引用后,就可以像定义其它变量一样声明字典了。

这样的优点就是对初学者来说,在输入变量和“.”之后,可以看到属性和方法的提示,如下图:

b.后期绑定

后期绑定指在运行代码的过程中创建对象,指定对象类型,不需要先声明。对于后期绑定来说,优点是移植性好,换个计算机运行VBA程序不需要设置引用对象库,缺点是编码时不会有提示。方法如下:

小结一下数组,集合和字典的声明方法①数组和集合都是VBA的内置对象,都可以直接使用Dim声明 ,而字典不是VBA的内置对象,必须引用对象库后才能用Dim声明,或者在代码中用后期绑定声明。②数组、集合和字典都必须分配了内存空间才能使用属性和方法,数组分配内存空间就是确定数组的长度,集合分配内存空间就是New一个Collection,字典分配内存空间就是New一个Dictionary或CreateObject。

今天我们主要熟悉了一下数组、集合和字典的概念和声明方法,希望基础掌握不牢的小伙伴们能对这部分基础加深记忆,下次我们一块学习一下这三个概念的关于数据的赋值和读取,以及其他属性和方法的区别联系。

猜您喜欢往期精选▼

1.【20180831】- 工作簿太多怎么办,自动工作表目录来帮忙

2.【20180828】- Excel VBA工作表引用方式,傻傻也分得清

3.【20180825】- 学Office,从安装开始 - 11 Office 2019预览版安装演示

4.【20180824】- 学Office,从安装开始 - 10 Office 365介绍和安装

5.【20180823】- 学Office,从安装开始 - 09 Office KMS试用激活

6. ……

想要学习更多内容,欢迎关注我们~Written by 中药党 in 20180904^_^

微信公众号:SaveUTime

SUT学习交流群:615356012,入群费用:5元,非诚勿扰~

关注公众号,提高效率,节约您的时间!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3