ExcelVBA⼊门(⼆)数组和字典
vba 字符串转数组数组和字典也是VBA的常⽤到数据类型之⼀。但是我翻了有四五本VBA教程相关的书,⾥⾯都没有介绍到字典,数组到是在介绍数据类型时有介绍,⽽并没有提到字典。
事实上,字典不是VBA内置的类型,它是Windows脚本语⾔的。但其实字典在VBA中也是⾮常重要的,它⾮常适⽤于需要进⾏⾮重复性数据的操作。我多次需要使⽤到字典,但很少⽤到数组。
1. 数组
如果有学过其它编程语⾔,应该对数组不陌⽣。其实数组就是多个变量的集合,⽽且它是有顺序的,通过索引来访问⼀个数组中的各个值。但应该记住的是:数组中的各个数据,它们的类型必须是相同的。
数组也应当要先声明,后使⽤。VBA中的数组有动态数组和静态数组之分。
1.1 静态数组
所谓静态数组,即它的长度是固定不可变的。
声明语法如下:
Dim 数组名(a to b) As 数据类型
其中a和b均为数字,表⽰数据的索引起始值。也可以只写⼀个数字,则此时数组使⽤默认索引,从1开始,数字表⽰它的长度。
例如:
Dim MyArray1(10) As String
Dim MyArray2(10 to 20) As String
1.2 动态数组
如果在定义时并不知道需要使⽤的数组的长度是多少,则可以定义它为动态数组:
Dim Myarr3() As String
可以看到,定义动态数组,只需要在括号⾥⾯留空就⾏了。
待确定了数组的长度之后,可以使⽤ReDim来重新定义数组
1.3 数组的赋值与取值
虽然都是通过索引来对数组进⾏赋值,但与其它主流的编程语⾔不同的是,VBA中不是使⽤中括号[]⽽是使⽤⼩括号()进⾏的。
Dim arr(5) As String
For i = 1 to 5
'赋值
arr(i) = i
Next
'取值
Debug.Print arr(1)
此外,也可以直接把Excel单元格中的数据赋值给数组。如上⾯定义的长度为5的⼀维数组,可以以以下⽅式把单元格中A1到A5的数据分别载⼊到数组arr中:
arr = Range("A1:A5")
1.4 多维数组
VBA中也⽀持多维数组。
如,定义⼀个四⾏五列的⼆维数组如下:
Dim Myarr(4, 5) as String
或者:
Dim Myarr(1 to 4, 5 to 8) As String
定义⼀个三维数组:
Dim Myarr(3, 4, 5) As String
或者:
Dim Myarr(1 to 3, 4 to 6, 7 to 9) As String
1.5 其它
⽹上有说到很多对数组的操作,例如求数组的上下界,对数组求和等,我觉得这些都不算是数组的特有操作,因为它对其它数据类型也是可以使⽤的,所以就不打算再介绍了。有需要⽤到的,可以再查询
2 字典
字典其实就是⼀些“键-值”对。在很多场合,它都能起到很⼤的作⽤,使⽤起来⾮常⽅便,有类似于微型数据库的作⽤,可⽤于临时保存⼀些数据信息。
2.1 创建字典
VBA中创建字典有两种⽅法
2.1.1. 引⽤声明
在VBE菜单中,选择“⼯具-引⽤”,在弹出的对话框中选择中边的“浏览”,此时会打开Windows系统的驱动⽬录(C:\Windows\System32),然后到scrrun.dll,确定确定返回就⾏了。
添加引⽤后,就可以像定义其它变量⼀样声明使⽤字典了。
Dim d As New Dictionary
2.1.2. 直接创建
我⽬前基本上都使⽤的这种⽅法。可如下定义:
Dim d As Object
Set d = CreateObject("Scripting.Dictionary")
2.2 字典的⽅法
字典有6个⽅法,分别是Add、Exists、Keys、Items、Remove、RemoveAll。使⽤⽅法如下:
2.2.1 Add
⽤于添加内容到字典中。
d.Add key, item
第⼀个参数为键,第⼆个参数为键对应的值
2.2.2 Exists
⽤于判断指定的关键词是否存在于字典(的键)中。
d.Exists(key)
如果存在,返回True,否则返回False。通常会在向字典中添加条⽬的时候使⽤,即先判断字典中是否已存在这个记录,如果不存在则新增,否则进⾏其它的操作。
2.2.3 Keys
获取字典所有的键,返回类型是数组。
d.Keys()
2.2.4 Items
获取字典所有的值,返回类型是数组。
d.Items()
2.2.5 Remove
从字典中移除⼀个条⽬,是通过键来指定的。
d.Remove(key)
如果指定的键不存在,会发⽣错误。
2.2.6 RemoveAll
清空字典。
2.3 字典的属性
字典有4个属性:Count、Key、Item、ConpareMode
2.3.1 Count
⽤于统计字典中键-值对的数量。也可以简单理解为统计字典中键的个数。
d.Count
2.3.2 Key
⽤于更改字典中已有的键。如:
d.Key("apple") = "Orange"
如果指定的键不存在,则会产⽣错误。
2.3.3 Item
⽤于写⼊或读取字典中指定键的值,如果指定的键不存在,则会新增。如:'读取
Debug.Print d.Item("apple")
'写⼊
d.Item("apple") = 10
2.3.4 CompareMode
CompareMode⽤于设置或者读取字典对象中⽐较字符串时的⽐较模式。
这个到⽬前为⽌我还没有⽤过。所以不讨论了。
本系列教程其它⽂章
Excel VBA ⼊门(⼆)数组和字典
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论