龙空技术网

VBA数组与字典解决方案第37讲:在VBA中字典的应用

VBA语言専攻 7450

前言:

而今朋友们对“map为m3的数组怎么解决”都比较关切,你们都需要剖析一些“map为m3的数组怎么解决”的相关知识。那么小编也在网络上搜集了一些关于“map为m3的数组怎么解决””的相关资讯,希望同学们能喜欢,看官们一起来学习一下吧!

大家好,我们今日继续讲解VBA数组与字典解决方案第37讲内容:在VBA中字典的应用。对于字典,也许许多的朋友对此比较陌生,在有的语言里字典也称之为MAP,应用也是比较广泛的。

字典,其实就是一些"键-值"对。使用起来非常方便,有类似于微型数据库的作用,可用于临时保存一些数据信息。

一VBA中创建字典:用的是WSH引用。

Dim myd As Object

Set myd = CreateObject("Scripting.Dictionary")

二字典的方法,有Add、Exists、Keys、Items、Remove、RemoveAll,六个方法。

①Add 用于添加内容到字典中。如myd.Add key, item 第一个参数为键,第二个参数为键对应的值

②Exists用于判断指定的关键词是否存在于字典(的键)中。如myd.Exists(key)。如果存在,返回True,否则返回False。通常会在向字典中添加条目的时候使用,即先判断字典中是否已存在这个记录,如果不存在则新增,否则进行其它的操作。

③Keys获取字典所有的键,返回类型是数组。如myd.Keys()

④Items获取字典所有的值,返回类型是数组。如myd.Items()

⑤Remove从字典中移除一个条目,是通过键来指定的。myd.Remove(key)如果指定的键不存在,会发生错误。

⑥RemoveAll 清空字典。

三字典的属性有Count、Key、Item、ConpareMode四种属性

①Count用于统计字典中键-值对的数量。也可以简单理解为统计字典中键的个数;

②Key用于更改字典中已有的键。如:myd.Key("oapp") = "Orange" 如果指定的键不存在,则会产生错误。

③Item用于写入或读取字典中指定键的值,如果指定的键不存在,则会新增。如.Item("oapp") = 10

下面以一个实例来说明字典的应用:在下图的A列有不同的键,要在对应的键中写入键值,然后把C列对应的键去掉,并任意增加一个键,最后在E,F列写出最后的键和键值,代码如下:

Sub MyNZsz_37() '第37讲 字典的应用

Dim dic As Object

Sheets("37").Select

Set dic = CreateObject("Scripting.Dictionary") '引用字典

Dim arr(1 To 21), i As Long '建立一个数组用来给键赋值

For i = 1 To 21

arr(i) = i + 99

Next i

For i = 1 To 20

dic(Cells(i, "a").Value) = arr(i) '写入键和键值,要注意写入的方法

Next i

i = 1

Do While Cells(i, 3) <> ""

dic.Remove (Cells(i, "c").Value) '移除C列的键值

i = i + 1

Loop

dic.Add "WW21", "234" '增加一个键,键值是234

[e1].Resize(dic.Count, 1) = Application.Transpose(dic.Keys) '转置显示键

[f1].Resize(dic.Count, 1) = Application.Transpose(dic.items) '转置显示键值

End Sub

代码截图:

代码讲解:

1. 上述代码首先创建一个字典对象,然后,把工作表A列的值放到数组,作为键;第三步是给字典的键赋值,第四步移除C列的键对,第五步,增加一个键,第六步显示

2 Set dic = CreateObject("Scripting.Dictionary") '引用字典

字典的加载有两种办法,一个是CreateObject("Scripting.Dictionary"),另外一个是引用,就是在VBE窗口,打开引用,找到Dictionary的引用即可,本书中大多以SET形式来引用字典

3 For i = 1 To 21

arr(i) = i + 99

Next i

赋值一维数组,作为键值

4 For i = 1 To 20

dic(Cells(i, "a").Value) = arr(i) '写入键和键值,要注意写入的方法

Next i

写入键和键值。要特别注意是我实例中的写法

5 dic.Remove (Cells(i, "c").Value) '移除C列的键值

上述代码移除键和键值.

6 dic.Add "WW21", "234" '增加一个键,键值是234

上述代码增加键和键值.

6 [e1].Resize(dic.Count, 1) = Application.Transpose(dic.Keys) '转置显示键

[f1].Resize(dic.Count, 1) = Application.Transpose(dic.items) '转置显示键值

显示键和键值

运行后的截图:

今日内容回向:

1 什么是字典?

2 字典有哪些属性?

3 如何给字典赋值?

4 利用字典如何进行排重?

标签: #map为m3的数组怎么解决