Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3862|回复: 17

[已解决]这样赋值到数组可能吗?

[复制链接]
发表于 2010-3-24 09:16 | 显示全部楼层 |阅读模式


Sub test()
    Dim arr
    arr = [a1:d5]
End Sub

这样,单元格区域A1:D5,便赋值给了数组变量arr。请问:

假如是要把sheet1、sheet2、sheet3,这三张工作表的单元格区域A1:D5,一起赋值给数组变量arr。能不能,只在赋值号右边,怎么怎么变变 ..... 就一下子,赋值到arr中?当然,arr这时可能将是3维数组[em04]

我就是想知道存不存,如test()中的赋值方法那样简便的方法?

最佳答案
2010-3-24 21:13

把二维数组的二维数值看作是EXCEL的行和列完全就是对数组的误解,数组不是EXCELVBA独创的东西,

在很多的编程语言中都有数组,是EXCEL的行列表格适应了二维数组,而不是数组适应了EXCEL的行和列.

在你开始学习EXCELVBA时,把二维数组的二维比作行和列,只为了让你形象地理解数组的基本结构,

但你不能把二者给划上等号.

数组本身仅仅是一个树形的有序列的数值集合,可以用序号索引到对应的数值.

程序运行时创建的数组相当于运行时在内存中临时生成的一个树形的可用序号索引的小型数据库,仅此而已.

所以你可以根据你的数据索引规则来创建数组的维数,

数组不但可以是arr(x,x,x,....)

还可以是arr(x)(x)(...)....

如:

arr = Array(Sheet1.Range("a1:d5").Value, Sheet2.Range("a1:d6").Value, Sheet3.Range("a1:d5").Value)

Dim arr2(2)
For i = 0 To 2
arr2(i) = Array(Sheet1.Range("a1:d5").Value, Sheet2.Range("a1:d6").Value, Sheet3.Range("a1:d5").Value)
Next

发表于 2010-3-24 09:42 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2010-3-24 09:51 | 显示全部楼层

我是想:

arr = [a1:d5]执行前,arr是叫变体变量吧?(好像很多位高手说过,我忘了,不确定)

arr = [a1:d5]执行后,arr是数组变量

变量arr接受了这样的(赋值)请求,至少肯定VBA认同这种赋值。于是疑问:

  • 那哪些情况下,arr不接受呢?
  • 接受的原则是什么?
  • ....

为什么这里这么简便,不能不让我联想,如果1楼象那样情况时,还能。。。。吗?

PS:DJ想说什么[em13]

回复

使用道具 举报

发表于 2010-3-24 10:03 | 显示全部楼层

QUOTE:
以下是引用爱疯在2010-3-24 9:51:00的发言:

我是想:

arr = [a1:d5]执行前,arr是叫变体变量吧?(好像很多位高手说过,我忘了,不确定)

arr = [a1:d5]执行后,arr是数组变量

变量arr接受了这样的(赋值)请求,至少肯定VBA认同这种赋值。于是疑问:

  • 那哪些情况下,arr不接受呢?
  • 接受的原则是什么?
  • ....

为什么这里这么简便,不能不让我联想,如果1楼象那样情况时,还能。。。。吗?

PS:DJ想说什么[em13]

我看你说这句话:怎么怎么变变 ..... 就一下子

我就突然很想知道你的年龄

[em02]
回复

使用道具 举报

 楼主| 发表于 2010-3-24 10:07 | 显示全部楼层

语文不好的恶果

[em11]
回复

使用道具 举报

发表于 2010-3-24 10:14 | 显示全部楼层

目前只晓得

Dim arr(1 to 3)
arr(1) =sheet1.[a1:d5].value

arr(2) =sheet2.[a1:d5].value

arr(3) =sheet3.[a1:d5].value
不晓得有没有更直接的方法,等着学习

[em02][em02]
回复

使用道具 举报

 楼主| 发表于 2010-3-24 10:17 | 显示全部楼层

谢谢上清宫主

 

[em25][em25]
回复

使用道具 举报

发表于 2010-3-24 10:32 | 显示全部楼层

arr()()模式的数组,我还以为VBA里没有呢,学习了[em02]
回复

使用道具 举报

 楼主| 发表于 2010-3-24 11:38 | 显示全部楼层

昨天搜到这个:http://www.officefans.net/cdb/viewthread.php?tid=74788,觉得很厉害。

pAWfLup2.rar (8.84 KB, 下载次数: 9)

这样赋值到数组可能吗?

这样赋值到数组可能吗?
回复

使用道具 举报

发表于 2010-3-24 11:43 | 显示全部楼层

看各人的思维了,3维数组名称(第1维,第2维,第3维)可以是行列表、行表列、列行表…就看各人象铁耙版主那样咋赋值咋行  

 

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-20 12:32 , Processed in 0.301970 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表