分享

VBA入门54:字典:创建字典

 L罗乐 2017-10-11

        VBA中字典是十分有用的对象,和我们现实当中使用的《新华字典》、《成语字典》同样的功能。

        要在VBA中使用字典,必须先创建一个字典。

        VBA中本无字典,你创建了就有了。

        字典是一个对象。

         创建字典有前期绑定后后期绑定两种方式,这里只说后期绑定。后期绑定代码如下:

    Dim d  As Object

    Set d = CreateObject('scripting.dictionary')

d 就是一个字典对象,此时的字典是空白的,神马内容也没有。接下来要将下面内容都放进字典。

Sub 创建字典()

    Dim d  As Object, arr

    Set d = CreateObject('scripting.dictionary')

    arr = [a1].CurrentRegion

    For i = 1 To UBound(arr)

        d(arr(i, 1)) = arr(i, 2)

    Next

End Sub

上述代码已经将内容放进字典了。

我们可以在本地窗口看到。

在本地窗口中,我们只看到字典d中的姓名,而没有数值。在《新华字典》等字典当中,假如我们查询“电”,那么关于“电”的解释就出来了,如下图

同样的道理,在VBA中使用字典,也是为了查询。

比如查询“李白”的数值,如下图,S就是李白的数值。

所以,在创建了字典之后,

d('李白')=2832,就表示将“李白”这条数据放进了字典。

当我们需要查询“李白”的数值的时候,

S=d('李白'),就返回了李白的数值,相当于“在字典中查询了李白的信息”

在d('李白')=2832中,d表示字典,'李白'是字典d的关键字(key),2832是字典d的条目(item)。通过key就可以查询item。


要查询李元芳、狄仁杰、蔡文姬三人的数值。

1、数组查询方法,将李元芳、狄仁杰、蔡文姬三人分别在数组中遍历三次,得到其数值。

Sub vv()

    Dim i&, j&

    Dim arr

    arr = [a1].CurrentRegion

    For i = 1 To 3

        For j = 1 To UBound(arr)

            If Cells(i, 'e') = arr(j, 1) Then

                Cells(i, 'f') = arr(j, 2)

                Exit For

            End If

        Next

    Next

End Sub

2、字典方法

Sub 创建字典()

    Dim d  As Object, arr

    Set d = CreateObject('scripting.dictionary') '创建字典d

    arr = [a1].CurrentRegion '将数据放进数组

     '将数组数据放进字典

    For i = 1 To UBound(arr)

        d(arr(i, 1)) = arr(i, 2)

    Next

    '查询字典,输出数据

    For i = 1 To 3

        Cells(i, 'f') = d(Cells(i, 'e').Value)

    Next

End Sub


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多