|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 f8b1987 于 2012-6-8 12:34 编辑
在引用工作表名称把单元格写入数组的话,定义数组不要使用dim arr()这种形式,使用dim arr即可。
接触了VBA字典法一段时间,虽然没有什么大的提升,总算对字典法有个初步的理解。
想当初,刚学的时候,可是问了很多幼稚的问题{:soso_e106:}。
对于字典法的含义解释,当然有EH VBA版主蓝桥玄霜的帖子:
http://club.excelhome.net/forum.php?mod=viewthread&tid=638154&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1
版主的帖子说得挺不错的。但是,对于像我这种VBA学习水平不高且初学字典法的人,有很多地方还是有点难理解的。
在这里,我只作为一个菜鸟的理解,用菜鸟的语言对字典法进行基础解释。
我们看下面的代码:
- Sub 字典简要解释()
- Dim i As Integer, j As Integer, dic As Object, arr, brr
- '定义i、j,定义字典对象dic,定义动态数组arr、brr
- Set dic = CreateObject("scripting.dictionary")
- '固定用法,意为创建字典对象,这里的dic是变量,并非要求用dic。
- brr = Sheet2.Range("a1").CurrentRegion
- '单元格区域装入数组,查看范围可以选择A1单元格,按下CTRL+*即可选定该范围
- arr = Sheet1.Range("a1").CurrentRegion
-
-
- For i = 2 To UBound(brr)
- dic(brr(i, 1)) = brr(i, 2)
- '字典(KEY)=item,意思是把brr(i,1)的值循环写入字典的key,并把brr(i,2)作为字典的item
- 'dic锁的集合体,有很多锁。好比是:锁头(钥匙)=打开锁的车子
-
- 'Key = brr(i, 1)
-
- '理论上一条不同的钥匙只能打开一把锁,你能打开宝马的锁还是打开摩托车的锁,就取决于你的钥匙。
-
- 'brr(i,2),字典中的item。我们用钥匙开了锁,自然可以选择进入安装该锁的对象,例如打开了宝马的锁可以进入宝马,打开了法拉利的锁自然可以开法拉利
-
- '如果brr(i,1)=宝马的钥匙,那么dic(brr(i,1))就是dic(宝马的钥匙),dic(宝马的钥匙)=打开锁的宝马。
- Next i
-
- For j = 2 To UBound(arr)
- arr(j, 2) = dic(arr(j, 1))
- '我们令数组arr的第2列等于“打开了锁的对象”,'因为前面我们已经知道dic(宝马的钥匙)=打开锁的宝马,那么dic(arr(j, 1))开到的到底是宝马还是摩托,又或者法拉利,'就取决于打开dic的钥匙arr(j, 1)的值,j值相同,表示与arr(j, 2)同行的第1列的值。'示例,当j=2,arr(j,1)="A107",那么就是dic(arr(j,1))=dic("A107")打开的对象是对应的item值107
- '数组arr(j,2)的结果就用值107替换了
- Next j
- Sheet1.Range("a1").Resize(UBound(arr), 2) = arr
- '通过前面的arr(j,2)循环替换成字典的item,已经改变数组arr第2列的结果,我们把数组按高度UBound(arr)、宽度(2)“贴”回单元格内
- 'ubound是获取数组的“三围”(维)中的数据,ubound(arr)我们就是获得arr长得多高,ubound(arr,2)我们就是度量arr腰围是多大
- End Sub
复制代码 示例文件:
字典法初学注释.rar
(9.38 KB, 下载次数: 4300)
其他例子
http://club.excelhome.net/thread-875397-1-1.html
|
评分
-
14
查看全部评分
-
|