在VBA中从一个范围创build一个数组
我有一个看似基本的问题,但找不到解决它的任何资源。
简而言之,我只是想将单元格范围内的所有内容(全部列)加载到数组中。
我可以通过这个方法来完成这个任务
DirArray = Array(Range("A1"), Range("A2"))
但出于某种原因,我不能创build这样的数组:
DirArray = Array(Range("A1:A2"))
我真正的范围更长(可能会有所不同),所以我不想单独列举单元格这种方式。 任何人都可以告诉我如何正确加载到一个arrays的整个范围?
用后面的代码:
MsgBox UBound(DirArray, 1)
和
MsgBox UBound(DirArray)
返回0,而前者返回1。
只需将variables定义为变体,并使其相等:
Dim DirArray As Variant DirArray = Range("a1:a5").Value
不需要Array命令。
使用Value2
会带来性能上的好处。 根据查尔斯·威廉斯博客
Range.Value2与Range.Value的工作方式相同,只是它不检查单元格格式并将其转换为Date或Currency。 这可能是为什么它检索数字时比.Value更快。
所以
DirArray = [a1:a5].Value2