打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
读取工作表中不确定数量的数据

《VBA经典应用69例》,是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容是教程的应用9:读取工作表中不确定数量的数据

应用9  VBA中的ReDim声明语句

大家好,我们这讲开始一个新的应用专题讲解,就是VBA中的ReDim声明语句,这个专题应用的讲解也是结合给学员答疑的频度来讲解的,很多学员都问我ReDim的用法,所以我将努力结合我多年应用经验并结合一些经典的用法展示给大家。

  ReDim语句用于在VBA中声明动态数组的大小。以后可以根据需要多次使用它,并重新声明数组的大小。它只能用于动态VBA数组(在原始声明中未声明数组大小),不适用于固定VBA 数组(在原始声明中声明数组大小)。

3  Preserve关键字利用,保留原值

在动态数组使用过程中,我们可能希望在代码的后期阶段修改数组大小,但保留已在数组中的信息。如果是这样的话,可以使用ReDim Preserve。

Sub mynzC()

    '声明字符串数组

    Dim strNames() As String

    '调整字符串数组的大小,使其能够容纳3个值

    ReDim strNames(2) As String

    strNames(0) = '小猫'

    strNames(1) = '小狗'

    strNames(2) = '小鸡'

    MsgBox Join(strNames, vbCrLf)

    '调整字符串数组的大小,使其能够容纳5个值

    ReDim Preserve strNames(4) As String

    strNames(3) = '小猴'

    strNames(4) = '小马'

    MsgBox Join(strNames, vbCrLf)

End Sub

代码截图:

代码的讲解:

 1)上述代码中 ReDim Preserve strNames(4) As String 是重新分配数组的大小,但在重新分配的时候是保留原来3个数据的。

我们看代码的运行结果:

读取工作表中个数不定的数据

上面讲的第三个知识点在实际的工作中是十分有益的,例如下面的工作表:

我们希望读取出A列中所有数值大于10的数据,展示给客户。这个问题的难点在于我们无法在事先知道将要提取的数据个数。这个时候要靠动态数组来帮忙,同时在扩大动态数组大小的时候,不能破坏原数据。

我们看下面的代码:

Sub mynzD()

    Dim strNames() As String

    '计算列表中的行数

    n = Range('A1').End(xlDown).Row

    K = 0

    For I = 1 To n

        UU = Cells(I, 1).Value

        If UU > 10 Then

            K = K + 1

            ReDim Preserve strNames(K)

            strNames(K) = UU

        End If

    Next

    MsgBox Join(strNames, ' ')

End Sub

代码截图:

代码的解读:

  1)上述代码中利用ReDim Preserve strNames(K)来增加动态数组的分配个数,分配的时候保留原数据。由于增加数组分配个数是在判断了值大于10之后的动作,从而保证了数据的严谨。

最后我们看代码的运行结果:

结论:这个专题中,我们学习了ReDim语句在动态数组中的应用。动态数组是VBA 编码中非常有用的部分,使用ReDim语句为其增加了额外的灵活性。

今日内容回向:

   1  如何理解ReDim语句中各个参数的意义?

   2  如何保留动态数组的原值?

本讲内容参考程序文件:应用009.xlsm

我20多年的VBA实践经验,全部浓缩在下面的各个教程中:

分享成果,随喜正能量】至长反短,至短反长。遍地是黄金,缺少有心人. 叶自根生,相自心生。傲不可长,欲不可纵. 江山易改,本性难移。。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用VBA进行数据逆转换
VBA简单入门31:Redim语句,数组的裁剪和扩展
【烟花原创】VBA零基础之第113篇 VBA数组(三)
Excel VBA 9.3 数组的静态和动态之分
【烟花原创】VBA零基础之第113篇VBA数组(三)
VBA数组 | 从入门到精通(3)- 数组大小与维度转换
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服