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 |
|