经过前面两篇的学习,你基本已经对VBA中的数组有了一些基本的认识,今天我们继续来学习第三篇,关于数组的大小及维度转化!比如我们想在1000个数组中,找到偶数存入数组,我们并不知道结果到底有几个,怎么办? 在讲两种用法之前,我们看到代码中,小编还圈了一处,又是新的知识额,而且以后你还经常需要使用到他,所以我们先来说说这个Uboud相关知识!
知识点1:上标(Ubound)和 下标(LBound)Ubound和Lbound第二参数指定维度,如果是一维数组可以不用指定! 我们来看案例:Sheet4中准备了 4行3列的数组,写入数组进行二维数组测试读取单元格区域,默认下标都是1,所以这里我们不再演示,有兴趣的可以把UBound或者Lbound即可!
多维数组在VBA中基本不用,所以我们这里不再演示!补充上面的基础知识之后,我们再来谈上面的处理问题的两种方案!第二种,定义大的数组,应该不用我多讲,这种方式的好处,就是一次定义,内存开辟好,效率高!第一种,每次都去调整大小,不断的重新调整内存,速度相对较慢,不过我们可以通过UBound获取到数组最后的大小,第二种一般辅助其他计数变量处理!
Redim:你可以理解为重新定义,他的作用是调整最后一个维度的大小Redim Preserve:调整最后一个维度的大小并保留原有内容如果我们的上下标其中之一是非常数,那么直接dim 是错误的! 正确的处理方式,先定义一个动态数组,根据计算出来的上下标,通过redim 重新定义数组大小!但是ReDim Preserve只能改变最后一个维度的大小,如果你先改变其他维度,需要转置等方式调整一下!否则会报下标越界错误 最后我们来补充一个知识点,那就是如何清空并初始化一个数组,这个在我们循环使用一个数组的时候特别有用!
如果没做清空初始化处理,数组中应该有3个元素,分别是2、4、6才对,但是本地窗口中,我们arr 3个元素都是空值!这就是Erase的作用了!OK,关于数组的大小问题,我们就说到这里,下一期: 数组筛选及常用方法,敬请期待多多【点赞】 【关注】 【收藏】 【转发】,给小编持续更新的动力
|