欢迎来到天天文库
浏览记录
ID:42521475
大小:14.75 KB
页数:6页
时间:2019-09-16
《字典对象(一):基本原理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、字典对象(一):基本原理「VBA」学习系列第15篇终于到了VBA的装逼利器——字典对象(Dictionary)。现在写段VBA代码解决实际问题,如果不写个字典对象,都不好意思自称会VBA,更体现不了你的实力和逼格。不过,字典对象确实有其独特的地方,不仅有不可替代的功能还能极大地提高程序运行效率。那什么是字典对象呢?简单地理解,字典对象可以理解为一个二维数组,第一列称为关键字Key,Key列具有唯一不重复性,这是字典对象最重要的特性;第二列称为项目Item,Item列可以放各种类型的变量,包括数值、字符、日期甚至对
2、象。字典对象有6个方法和4个属性。简单,易用,但无比强大。字典对象的属性和方法方法6个:Add/Keys/Items/Exists/Remove/RemoveAll属性4个:Count/Key/Item/CompareMode01字典对象的方法#1:AddAdd方法向字典对象中添加一个关键字项目对。object.Add(key,item)代码详解1、Dimd:创建变量,也称为声明变量。变量d声明为可变型数据类型(Variant),d后面没有写数据类型,默认就是可变型数据类型(Variant)。也有写成DimdAs
3、Object,声明为对象。2、Setd=CreateObject('Scripting.Dictionary'):创建字典对象,并把字典对象赋给变量d。这是最常用的一句代码。3、d.Add'a','Frank':添加一关键字“a”和对应于它的项“Frank”。4、d.Add'b',“Lily”:添加一关键字“b”和对应于它的项“Lily”。5、d.Add'c',“Susan”:添加一关键字“c”和对应于它的项“Susan”。#2:ExistsExists方法实现如果Dictionary对象中存在所指定的关键字则返
4、回true,否则返回false。object.Exists(key)代码详解Ifd.Exists('c')Then:如果字典中存在关键字“c”,那么执行下面的语句。#3:KeysKeys方法返回一个数组,其中包含了一个Dictionary对象中的全部现有的关键字。object.Keys()其中object总是一个Dictionary对象的名称。代码详解1、k=d.Keys:把字典中存在的所有的关键字赋给变量k。得到的是一个一维数组,下限为0,上限为d.Count-1。这是数组的默认形式。2、[B1].Resize
5、(d.Count,1)=Application.Transpose(k):这句代码是很常用很经典的代码,所以这里要多说一些。Resize是Range对象的一个属性,用于调整指定区域的大小,它有两个参数,第一个是行数,本例是d.Count,指的是字典中关键字的数量,整本字典中有多少个关键字,本例d.Count=3,因为有3个关键字。呵呵,是不是说多了。第二个是列数,本例是1。这样=左边的意思就是:把一个单元格B1调整为以B1开始的一列单元格区域,行数等于字典中关键字的数量d.Count,就是把单元格B1调整为单元格
6、区域B1:B3了。=右边的k是个一维数组,是水平排列的,我们知道Excel工作表函数里面有个转置函数Transpose,用它可以把水平排列的置换成竖向排列。但是在VBA中不能直接使用该工作表函数,需要通过Application对象的WorksheetFunction属性来使用它。所以完整的写法是Application.WorksheetFunction.Transpose(k),中间的WorksheetFunction可省略。现在可以解释这句代码了:把字典中所有的关键字赋给以B1单元格开始的单元格区域中。#4:I
7、temsItems方法返回一个数组,其中包含了一个字典对象中的所有项目。object.Items()其中object总是一个字典对象的名称。代码详解1、t=d.Items:把字典中所有的关键字对应的项赋给变量t。得到的也是一个一维数组,下限为0,上限为d.Count-1。这是数组的默认形式。2、[C1].Resize(d.Count,1)=Application.Transpose(t):有了上面Keys方法的解释这句代码就不用多说了,就是把字典中所有的关键字对应的项赋给以C1单元格开始的单元格区域中。#5:Re
8、moveRemove方法从一个字典对象中清除一个关键字,项目对。object.Remove(key)其中object总是一个字典对象的名称。代码详解d.Remove(“b”):清除字典中“b”关键字和与它对应的项。清除之后,现在字典里只有2个关键字了。#6:RemoveAllRemoveAll方法从一个字典对象中清除所有的关键字,项目对。object.RemoveAll(
此文档下载收益归作者所有