<p></p><p> VBA数组储存于内存中,单元格的数据,储存于工作表的单元格区域里。</p><p> 从单元格中取出数据放在内存。</p><p> 单元格是行列结构的数据表,把它搬到内存中也应该是二维的数组。怎么搬呢?</p><p> 为了更好的搬运,内存先批了一块土地。内存说了,你有多少个单元格我不问,反正你有多少数据我提供多大的地方。</p><p><font color="#ee0000"> 一、声明:</font></p><p> Dim arr as Variant '<font color="#0707c6">声明一个变量,这个变量应该是一个可以转化成数组的Variant类型(可以省略),不能声明其他数据类型</font></p><p> 如: Dim arr as string 这种声明就是<font color="#f70909">错误</font>的,存放单元格的数据类型必须是 Variant(也可以省略) </p><p> Dim arr(1 to 10, 1 to 2 ) , 这种声明也是<font color="#dd0000">错误</font>的,固定大小的VBA数组是不能一次性装入单元格数据</p><p> 或:dim arr() <font color="#0808e7">这种声明方式是声明一个动态数组,也可以装入单元格区域,构成一个VBA数组</font>。</p><p><font color="#dd0000"> 二、装入</font></p><p> arr =range("a9:c100") '装入很简单,变量 = 单元格区域</p><p><font color="#e70808"> 三、读出</font></p><p> 装入数组后的单元格数值,可以按 <font color="#0707b5">数组名称</font>(<font color="#cc0000">行数</font>,<font color="#046316">列数</font>) 直接读取该位置的值,如下面的代码。</p><p> Msgbox arr(3,2) '就可以取出搬过去的而构成的数组第3行第2列的内容</p><p><font color="#cc0000">四、示例</font></p><p> Sub s3()</p><p> Dim arr() '<font color="#0808d6">声明一个动态数组(动态指不固定大小)<br/></font> Dim arr1 '<font color="#0c0caf">声明一个Variant类型的变量</font><br/> arr = Range("a1:c7") '<font color="#0808d6">把单元格区域A1:C7的值装入数组arr</font></p><p> arr1 = Range("a1:c7") '<font color="#0707b5">把单元格区域A1:C7的值装入数组arr1</font><br/> <br/> MsgBox arr(1, 1) '<font color="#0707c6">读取arr数组中第1行第1列的数值</font><br/> <br/> MsgBox arr1(2, 3) '<font color="#0707b5">读取arr1数组的第2行第3列的数值</font><br/> <br/>End Sub</p><p><font color="#ee0000">下期预告</font>:搬入内存的目的是为了更快速的计算,计算结束后,怎么搬回到单元格中呢?且听下回分解。</p>
[此贴子已经被作者于2010-8-5 12:07:31编辑过] |