动态数组怎么定义_ExcelVBA数组基础知识,初学者不可不学
的关键知识
今天和⼤家要说的是VBA数组的基本知识点,等你学到后⾯就会知道,数组和字典搭配起来真的是事半功倍的啦!所以学习好数组的基本知识点也是必不可少的,基础知识有了,才能有后⾯的应⽤。
数组的基本概念
数组其实是⼀组拥有相同元素的的组合。我们可以使⽤数组名称和他在数组中的位置来指定某些特定的值。可以拥有很多的值,他们在数组内部是通过引索号进⾏区分的。其实数组是⼀个变量的存在,这个概念请好好理解。
声明数组
我们既然已经初步知道数组了,但是我们知道如何去声明数组吗?其实很简单,如下图:
以上是我们定义数组的基本⽅法,当然这个是定义⼀维数组的⽅法。但我们如何声明多维数组呢?如下图:
vba自学好学吗上图就是我们声明3维数组的⽅法。
如果我们引⽤三维数组的某个值,应该怎么引⽤?我们可以这样引⽤arr(1,1,1)的值。
动态数组
顾名思义,动态数组,就是数组的⼤⼩是可以改变的。我们在上⾯声明的都是固定⼤⼩的数组,但我我们有很多时候,并不知道我们需要使⽤的数组具体有多⼤,这个时候我们就要⽤动态数组了。如下就是我们声明了⼀个动态的数组。
动态数组需要注意的⼀点是,我们需要在代码中使⽤这个数组的时候,我们需要⽤在程序过程中⽤Redim语句去重新指定数组的⼤⼩。其实就是重新定义数组的⼤⼩,给他制定⼀个值。
当然定义动态数组,我们可以使⽤次数是没有限制的,即我们可以多次定义动态数组,但是这个时候我们重新定义了,⾥⾯原来储存的数值就会丢失。如果我们不想原来的数丢失我们需要⽤Preserve进⾏数组保存。如下图:
数组的创建
说了数组的声明,接着说数组是如何创建的。我们先看看以下⼏种数组创建的⽅法。
代码写⼊:我们可以看到数字已经存放在数组中了。
使⽤Array创建数组,直接使⽤常数数组,进⾏赋值操作。
直接赋值法,如下图:直接单元格区域的值,赋值给数组
有时候我个⼈更喜欢直接赋值法得到的数组⽅式。⾄于你个⼈更喜欢哪种,还是要看你⾃⼰的,他们的效率其实是差不多的。
数组的上标和下标
我们都知道数组的⼤⼩,那么肯定⼤家都想知道数组的⼤⼩,就是起始点和终点站的⼤⼩。请不要黄,我们有⽅法可以得到这个的⼤⼩,他就是我们的UBount和LBound函数。⼀起看看是如何实现 的
吧!
要想知道数组arr的上界是多少,UBound(arr)
要想知道数组arr的下界是多少,LBound(arr)
是不是发现其实获得数组的⼤⼩其实⾮常的容易?
那我们如果想知道某⼀个动态数组的中的元素个数是多少?应该如何得到呢?
就是⽤我们的上标减去下标,然后加上1,就是我们数组中的元素个数。也即UBound(arr)- LBound(arr)+1。
写在最后的两点是我个⼈在学习过程中的⼼得:
(1)⼀维数组写⼊单元格区域时,这个单元格必须是⽔平⽅向的,也就是⼀个⼀⾏多列
的单元格区域,如果想写⼊垂直区域,必须使⽤⼯作表的Transpose函数转换⼀下;(2)和⼯作表的多单元格数组公式⼀样,数组写⼊单元格时,单元格的区域必须和数组的⼤⼩⼀致。
以上就是我们今天和⼤家说的代码的中的数组,其实VBA代码学习起来⾮常简单,他就是⼀个脚本语⾔的存在,他有⾃⼰的条条框框,你按照他的游戏规则来写代码就可以。如果有不明⽩的或者不懂的可以在下⽅留⾔,我们会⼀⼀解答的。
我是Excel教案,关注我持续分享更多的Excel技巧!