在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