- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VBA数组基础学习
VBA数组基础学习
VBA数组基础学习
一、数组概念
二、数组就是一个列表或者一组数据表。它是由连续可索引的具有相同内在数据类型的元素所组成的集合,数组中每一个元素都具有唯一的索引号。更改其中一个元素并不会影响到其它元素。
数组存在内存,可以利用索引号获取该集合中每一个子集。
数组的两个特点:
1、读写速度快
VBA读取对象中的值永远慢于读取内存中的值。可以借助VBA数组对程序提速。
2、无法永远保存
数据存于工作表区域内,可以永久保存。但存入内存中的变量数组和常量数组却受其作用域影响生命周期。
过程级别的私有数组变量或者常量数组在过程结束后会自动释放,结束其生命周期;
而公有的变量数组和常量数组在excel应用程序关闭后会自动释放。也就是重新启动excel后,以前任何数组都不存在。
3、数组分类
按照数组元素是否固定来分,可以分为静态数组和动态数组;
按照数组维度来分,可以分为一维数组、二维数组等,最多只能为60维。
二、数组的维度
数组可以是一维、二维直到六十维。而对于excel工作表来说,
excel的每一行或者每一列就可以转换成一维数组,而多行多列就可以转换成二维数组。
1、一维数组
在数组公式中,在A1:F1区域中输入数组公式:={1,2,3,4,5,6}
,然后按Ctrl+Shift+Enter,就可以在A1:F1之间得到了横向区域的值。
在A1:A6区域中输入数组公式:={1;2;3;4;5;6},然后按
Ctrl+Shift+Enter,就可以在A1:A6之间得到了纵向区域的值。
而VBA数组也可以得到同样的效果:
2.1 VBA 代码
Sub 横向数组()
[A1:F1] = [{1,2,3,4,5,6}]
End Sub
[{1,2,3,4,5,6}]代表是一维横向数组。
2.2 VBA代码
Sub 纵向数组()
[A1:A6] = [{1;2;3;4;5;6}]
End Sub
[{1;2;3;4;5;6}]代表是一维纵向数组。
从上面两个赋值过程来看,看到数组在VBA中的优势,不仅可以对单元格进行循环赋值,还可以把原本需要循环6次的操作集中一次完成。
2、二维数组
对于三行三列的数组,我们可以使用数组公式:={1,1,1;2,2,2;3,3,3}
在VBA中也可以用数组表示一个二维数组,如下面例子
Sub 二维数组()
[A1:C3] = [{1,1,1;2,2,2;3,3,3}]
End Sub
三、利用索引号获取数组中的元素
类似Range可以使用索引号访问区域中每一个单元格一样,一维数组和二维数组也可以使用索引号获取数组中每一个值。主要有两种形式:
形式一:Arr(Item)
形式二:Arr(RowIndex,ColumnIndex)
这两种形式看起来在形式上和Range的索引号完全一致,但在事实上存在很多差异。
请看差异在哪里,
例子1:
Sub 索引号引用数组()
Dim arr1() 声明数组变量arr1 = Array(wise, rose, 小花鸟, 小花鸭) 对数组赋值
MsgBox arr1(1) 正确的引用
MsgBox arr1(1, 1) 错误的引用
End Sub
在例子1中,对于一维数组的两种索引方式只能前者可以正常执行,后者会产生错误。
例子2:
Sub 索引号引用数组1()
Dim arr1() 声明数组变量
arr1 = [{1,1,1,1;2,2,2,2;3,3,3,3;4,4,4,4}] 对数组赋值
MsgBox arr1(4, 2) 正确的引用
MsgBox arr1(4) 错误的引用
End Sub
对于二维数组,例子2中两种方式只能使用第一种方式,而后者会产生错误。当使用索引号引用数组时候,值得注意是:第一个元素的默认索引值。
在默认状态下,如果模块中未指定第一个元素的索引号,那么默认为0。即数组中arr中的第一个值用arr(0)来表示,最后一个元素的索引号则为数组元素个数减1来表示。
如下例子:
Sub 索引号引用数组()
Dim arr1() 声明数组变量
arr1 = Array(wise, rose, 小花鸟, 小花鸭) 对数组赋值
MsgBox arr1(1) 正确的引用
End Sub
该例子显示的结果是rose而不是wise。如果不习惯这种默认的索引方式,可以利用option base语句。option base 1:表示数组中第一个元素的索引号为1
option base 语句只能置于模块的顶部,并且可选值只能为0或1
。因为默认状态为0,那么option base 0可以忽略。
四、声明数组与赋值
1、声明数组变量声明数组和声明其他变量一样,可以使用dim 、static、private 或public等语句声明。一般来说,有两种声明方式,
您可能关注的文档
- SQL注入原理及防范措施.doc
- SQL理论习题.doc
- -平面旋转LED点阵套件-电子制作.doc
- !郭化若与孙子兵法.doc
- SQL行转列.doc
- SQL获取所有数据库名、表名、储存过程以及参数列表.doc
- SQL语句的DECODE和NVL.doc
- Squid2.6反向代理实现多个Web缓存加速.doc
- SQL语言--数据查询1(单表查询).doc
- SRT计划.doc
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)