excel_vba数组入门教程集合

excel_vba数组入门教程集合

ID:13905904

大小:52.50 KB

页数:7页

时间:2018-07-24

excel_vba数组入门教程集合_第1页
excel_vba数组入门教程集合_第2页
excel_vba数组入门教程集合_第3页
excel_vba数组入门教程集合_第4页
excel_vba数组入门教程集合_第5页
资源描述:

《excel_vba数组入门教程集合》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、ExcelVBA数组入门教程集合  1.前言:不要把VBA数组想的太神秘,它其实就是一组数字而已。2.数组的维数:Sub数组示例() DimxAsLong,yAsLong Dimarr(1To10,1To3) '创建一个可以容下10行3列的数组空间 Forx=1To4   Fory=1To3      arr(x,y)=Cells(x,y) '通过循环把单元格区域a1:c4的数据装进数组中   Nexty Nextx MsgBoxarr(4,3)'根据提供的行数和列数显示数组 arr(1,2)="我改一下试试"'你可以随时修改数组内指定位置的数据 MsgBoxarr(1,2)E

2、ndSub总结:二维是由行和列表示的数组,如ARR(3,2)表示数组中第3排第2列的元素。而一维数组只是由一个元素决定,如ARR(4)表示数组中第4个元素3.把单元格数据搬入内存:一、声明:DimarrasVariant '声明一个变量,不能声明其他数据类型  Dimarr(1to10,1to2),这种声明也是错误的,固定大小的VBA数组是不能一次性装入单元格数据  或:dimarr()这种声明方式是声明一个动态数组,也可以装入单元格区域,构成一个VBA数组。 二、装入  arr=range("a9:c100")  '装入很简单,变量=单元格区域 三、读出装入数组后的单元格数值

3、,可以按数组名称(行数,列数)直接读取该位置的值,如下面的代码。  Msgbox arr(3,2)'就可以取出搬过去的而构成的数组第3行第2列的内容 四、示例 Subs3()   Dimarr()'声明一个动态数组(动态指不固定大小)  Dimarr1 '声明一个Variant类型的变量  arr=Range("a1:c7")  '把单元格区域A1:C7的值装入数组arr  arr1=Range("a1:c7")  '把单元格区域A1:C7的值装入数组arr1   MsgBoxarr(1,1)  '读取arr数组中第1行第1列的数值   MsgBoxarr1(2,3) '读取a

4、rr1数组的第2行第3列的数值 EndSub4.把单元格数据搬入内存:Subtest() Dimarr    '声明一个变量用来盛放单元格数据 DimxAsInteger arr=Range("a2:d5")    '把单元格数据搬入到arr里,它有4列4行  Forx=1To4    '通过循环在arr数组中循环   arr(x,4)=arr(x,3)*arr(x,2)'数组的第4列(金额)=第3列*第2例  Nextx Range("a2:d5")=arr    '把数组放回到单元格中EndSubSubtest1() Dimarr(1To5)'声明一维数组 Forx=1To

5、5   arr(x)=x*2 '通过循环给每个位置赋值 Nextx Range("A1:E1")=arr '把数组导入到excel中的a1:e1单元格中 Range("A1:A5")=Application.Transpose(arr)'如果是放在一列中,就需要对数组进行转置后再存放EndSub5.动态数组的声明:Subdarr() Dimarr() '声明一个动态的arr数组(不知道它能盛多少数据) Dimk k=Application.WorksheetFunction.CountIf(Range("a2:a6"),">10")'计算大于10的个数 ReDimarr(1To

6、k) '再次声明arr的大小,正好盛下k数量的值 Forx=2To6   IfCells(x,1)>10Then     m=m+1     arr(m)=Cells(x,1) '通过循环把大于10的数字装入数组   EndIf Nextx MsgBoxarr(2)EndSub6.动态数组的声明: arr(-19to8) 这个数组的编号就是从-19开始的.那么它的最小编号就是-19,最大编号是8,如果用语句返回就是: Subt1() Dimarr(-19To8)  MsgBoxUBound(arr)'返回最大编号,结果为8  MsgBoxLBound(arr)'返回最小编号,结

7、果为-19 EndSub如果是有行列组成的二维数组呢?二维数组返回行的下标和列的下标见下例 Subt2()  Dimarr(-19To8,2To5)   MsgBoxUBound(arr)'返回第1维(行的)最大编号,结果为8    MsgBoxLBound(arr)'返回第1维(行的)小编号,结果为-19    MsgBoxUBound(arr,2)'返回第2维(列的)最大编号,结果为5    MsgBoxLBound(arr,2)'返回第2维(列的)最小编号,结果为2  EndSub S

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。