【分享成果,正能量随喜】保持内心柔软,力量不在刚而在柔,能伸能弯的树才能经得起大风,为自己打造灵动的头脑。 生活是美好的,很多事情都出乎我们的意料,一味的抗拒并不能解决问题,我们需要的是一颗无限柔软真诚的心。
《VBA信息获取与处理》教程是我推出的第六套教程,目前是第一次修订。 这套教程定位于最高层次,是初中级之后的教程。 本教程内容为:跨应用程序信息获取、随机信息利用、邮件发送、VBA互联网数据抓取、VBA延时操作、剪贴板应用、Split功能扩展、工作表信息与其他应用程序交互、FSO对象的利用、获取工作表和文件夹信息,图形信息的获取,自定义工作表信息功能等。程序文件通过了32位和64位系统测试。 非常抽象,更有研究价值。
课程共两册,八十四讲。今天的内容是第四讲《EXCEL工作表数据的读取、回填和查找》第二讲:如何将工作表数据赋值给数组
第二节将工作表数据写入VBA数组
在上一节中,我们讲了几种实现工作表数据与VBA代码之间传递的方法。 在本讲中,我们将重点介绍如何将工作表数据写入数组。
1 读取工作表上的范围并将其放入数组
在VBA中,可以直接读取工作表上的范围,将其放入一个数组中,这种方法非常简单。 例如,
调暗 Arr() 作为
Arr = Range("A1:C5")
在上面的代码中,首先声明了一个变量变量数组变量,然后将这个变量指向指定的区域。 如果我们不能确定这个区域的大小,或者这个区域是可变的,我们可以使用下面的语句;
① myarr = ("41").
② myarr = ("40").[a1]。
③ myarr = Range("a2:c" & Range("c2").End().row)
④ myarr = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).row)
⑤ myarr = Range("a2:f" & [].End(xlUp).Row)
⑥ = 范围([A2], [].End(xlUp))
以上各种写法是我在第三套教程《VBA数组与字典解法》中的一些实际写法。 第一种表示整个工作表的使用区域,第二种是从“A1”单元格开始第三种是代表A2到C列最后一个非空单元格的矩形区域,第四种是A列中使用的区域(包括空格),第五种是A2到F列最后一个单元格使用的单元格范围(适用于低版本的excel),第六种是列中第二个单元格下使用的范围A(包括空单元格)
2 读取工作表上的指定范围,得到数组维数的确认
使用上述方案将工作表中的数据导入VBA数组后,需要注意的是数组始终是二维的。 第一个维度是行,第二个维度是列。 因此,下面的例子:
调暗 Arr() 作为
Arr = Range("A1:C5")
Arr 隐式调整为 Arr(1 到 5, 1 到 3),其中 5 是行数,3 是列数。 即使工作表数据在一行或一列中,也创建一个二维数组(例如,Arr(1 到 10, 1 到 1))。 载有工作表数据的数组始终具有等于 1 的下限 (),无论您在模块中可能有什么选项基本指令。 您无法更改此行为。 例如:
调暗 Arr() 作为
Arr = Range("A1:A10")
这里,Arr 被 VBA 自动标记为 Arr(1 to 10, 1 to 1)。 您可以使用如下代码循环遍历工作表值数组:
子 MYNZC()
调暗 Arr() 作为
Arr = Range("A1:B10")
昏暗的R一样长
昏暗的C一样长
For R = 1 To (Arr, 1) ' 数组的第一维表示行。
for C = 1 To (Arr, 2) '数组的第二个维度表示列
调试。 打印Arr(R, C)
下一个
下一个
结束子
代码截图:
代码的操作:
3 当工作表上指定区域为单元格时
在向数组中引入指定范围的数据时,我们经常会遇到一种特殊情况,即只有一个单元格。 这时候往往会用到上面的方法报错。 有时是数组赋值错误,有时是数组。 下标和下标报错,要看具体的代码应用。 应该如何处理这个错误? 我们可以使用下面的代码:
Sub MYNZD() '当工作表上的区域是单个单元格时
调暗排列为
("")..
m = .Cells.Count
如果 m = 1 那么
ReDim Arr(1 对 1, 1 对 1)
排列 (1, 1) = ("").
排列 (1, 1)
别的
安排=(“”)。
排列 (1, 1)
万一
结束子
代码截图:
上面的代码成功避免了这个错误。 大家在使用这个数组赋值的时候都避免了这样的错误。
回到本节知识点: 可以用什么方法将指定范围内的数据读入数组? 读取数组是多少维数组? 如何避免指定区域只有一个单元格的情况?
本题参考程序文件:004 .XLSM
我20多年的VBA实践经验全部浓缩在以下教程中,教程学习顺序:
① 7→1→3→2→6→5或7→4→3→2→6→5。
② 7→8
每套课程内容介绍:
第七套教程(共三册):《VBA EXCEL应用》:VBA基础讲解
第一套教程(共三册):《VBA代码解答》:入门后的提升教程
第四套教程(16G):VBA代码解题视频(第一套视频讲解)
第三套教程(共两册):《VBA数组与字典解法》:数组与字典的专题讲解
第二套教程(共两册):《VBA数据库解决方案》:数据库专题讲解
第六套教程(共两册):《VBA信息获取与处理》:详解VBA的网络与跨程序应用
第五套教程(共两册):VBA中类的解释与利用:类与接口技术详解
第八套教程(共三册):VBA的Word应用(最新教程):VBA在word中的使用