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

【分享成果,随喜正能量】332人的生活中也必须有烦恼,如此,美好的事物才会越发鲜明地彰显。忧虑是最好的教育者。人的一生所遇到的很多事情,其实都是上天与你之间的事,而不是你与他人之间的事。
应用9 VBA中的ReDim声明语句
大家好,我们这讲开始一个新的应用专题讲解,就是VBA中的ReDim声明语句,这个专题应用的讲解也是结合给学员答疑的频度来讲解的,很多学员都问我ReDim的用法,所以我将努力结合我多年应用经验并结合一些经典的用法展示给大家。
ReDim语句用于在VBA中声明动态数组的大小。以后可以根据需要多次使用它,并重新声明数组的大小。它只能用于动态VBA数组(在原始声明中未声明数组大小),不适用于固定VBA 数组(在原始声明中声明数组大小)。
4 读取工作表中个数不定的数据
上面讲的第三个知识点在实际的工作中是十分有益的,例如下面的工作表:

我们希望读取出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 如何保留动态数组的原值?

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


