相关文章推荐
不开心的消防车  ·  关于libpng warning: ...·  1 年前    · 
爱旅游的红烧肉  ·  PHP调试跟踪之XDebug使用总结_xde ...·  1 年前    · 
有胆有识的香槟  ·  Koa 本地搭建 HTTPS 环境 - ...·  2 年前    · 
长情的山羊  ·  Vue3实战——项目搭建(二) - 简书·  2 年前    · 
还单身的松球  ·  pandas使用技巧【18】找到和移除重复行 ...·  2 年前    · 
Code  ›  VBA数组(三)数组赋值开发者社区
矩阵 vba数组 赋值语句 赋值
https://cloud.tencent.com/developer/article/1520238
发财的李子
1 年前
无言之月

VBA数组(三)数组赋值

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
无言之月
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > VBA数组(三)数组赋值

VBA数组(三)数组赋值

作者头像
无言之月
发布 于 2019-10-13 15:38:25
12.2K 0
发布 于 2019-10-13 15:38:25
举报
文章被收录于专栏: Excel和Access学习笔记

大家好,上节介绍了在使用数组之前如何声明数组,本节就来介绍静态数组如何赋值。(动态数组会单独一节讲解)

上 节 复 习

在介绍数组赋值之前,首先简单复习下上节介绍的声明数组和数组中元素的表示方法。

以常用的二维数组为例,声明一个3*4的二维数组arr1,数据类型为字符串型。

dim arr1(2,3) as string

声明数组时省略下标,默认从0开始,所以第一维是0至2,第二维是0至3。

数组中每个元素的的表示方法为数组名(第一维索引号,第二维索引号),例如arr1(0,0)、arr1(0,)、arr1(2,3)等,每个元素的坐标可以如下图所示。

还可以将数组该数组声明为dim arr1(1 to 3,1 to 4) as string。

其中第一维索引号为从1至3,第二维维从1至4。数组中每个元素也是数组名(第一维索引号,第二维索引号),例如arr1(1,1)、arr1(3,4)等,其他坐标如下图所示。

两种表示方法,第二种方法即下界从1开始更实用。因为这样数组中元素的坐标,与单元格对象的cells属性坐标一致。数组元素位置就可以和工作表中对应起来。

数 组 赋 值

在前面的编写sub程序过程中,在声明变量之后都要给变量赋值。

同样在声明数组后,对数组赋值,VBA程序才能通过数组访问数据。在给数组赋值时,和变量赋值一样,要分别给数组里的每个元素进行赋值。

下面以静态数组为例,声明了数组的维度,以及每个维度的下界和上界,数组容纳固定量的元素,给数组赋值主要有下面几种方式。

1、每个元素进行赋值

数组赋值时,需要给数组中每个元素进行赋值。这种方式比较简单

下面通过举例演示,如声明一个5个元素的integer类型的数组,将1到5的自然数保存到数组中。具体演示如下:

示例中声明了Arr(4) 的5个元素的大小的integer类型数组。赋值时将它每一个元素,从Arr(0)=1开始一直到Arr(4)=5,运行就完成了赋值。

再举个简单的例子,声明一个4个元素的integer类型的数组,将A1:A4单元格区域中的数值赋值给数组。

A列的单元格填入整数,声明了Arr(1 to 4)为4个元素的integer数组,然后依次将每个单元格的值赋值给数组中的元素从Arr(1) 到Arr(4)。最后再立即窗口中显示Arr(3)的值为3。

这种方法主要是帮助理解数组元素如何赋值,在VBA程序中通常涉及大量数据的赋值。就需要用其他更方便的方法代替。

2、通过循环结构赋值

对于批量处理数据时,通常都会借助于循环结构。同样在数组的批量赋值时,同样也可以借助于循环结构。比如上面两个小示例,都可以用循环结构改造。以第二个为例。

通过for循环结构变量i从1到4进行循环,将数组中的每个元素进行赋值。对于大量数据更加实用。

下面用二维数据举例,前面提到如果数组维度的下界均为从1开始,那么数组中元素的坐标,与单元格对象的cells属性相对应。

如表格中A1:D4区域共3行4列的有多种类型的数据,将它们赋值到数组中。需要先声明一个3*4的二维数组变体型数组(由于有不同类型的值,所以默认的变体型Variant类型)。将元素单独赋值是很大的工作量,下面就通过循环嵌套来将表格中的值赋值给数组。

代码中首先声明了3*4大小的二维数组,为默认的变体型数据类型。维度的下界均从1开始。

下面就是两个for循环嵌套。整形变量i从1循环至3,变量j从1循环至4,两个循环嵌套中,执行 Arr(i, j) = Cells(i, j)语句将cells(i,j)元素的值赋值给数组中的元素Arr(i,j)。

执行代码后在立即窗口中显示数组Arr(2,3)的值为“姓名” Arr(3,1)的值为“小白”。

这种通过循环语句给数组赋值的方法很经典,掌握后对数组和循环结构都会有很好的理解。而二维数组下界从1开始时与单元格cells属性是对应关系。

3、通过Range对象创建数组

上面介绍了通过循环结构给数组赋值后,上面提到二维数组下界从1开始时与单元格cells属性是对应关系。实际不通过循环嵌套结构也可以直接赋值。

如果想把一个单元格区域的值,直接存储到数组里,可以直接把单元格区域的值赋值给变量名。如下图所示:

代码中首先不是声明数组,而是声明了一个默认的变体型变量。

而Arr = Range("a1:d4").Value该语句就讲A1:D4单元格的值赋值给了Arr这个数组中.(由变体型变量变成数组。)

通过这种方式得到的数组,维度的下届都是1。即得到的这个数组其实就是Arr(1 to 3,1 to 4)

所以执行代码后在立即窗口中显示仍是数组Arr(2,3)的值为“姓名” Arr(3,1)的值为“小白”。

这种方法实际是直接创建数组的方法,这里归到数组赋值一并介绍。注意两个关键点。

1、声明的默认的变体型变量。

2、通过这种方式得到的数组,维度的下届都是1。


今天下雨

本节主要是介绍了数组的赋值的内容,特别是循环结构赋值、二维数组和单元格对象cells属性的对应、单元格range对象创建新数组等内容。后续在介绍动态数组、数组相关函数时都会再涉及和复习。

希望本文对你有帮助,有问题可以给在下方留言,祝大家学快乐。

本文参与 腾讯云自媒体同步曝光计划 ,分享自微信公众号。
原始发表:2019-05-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除
编程算法

本文分享自 Excel和Access学习笔记 微信公众号, 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!

编程算法
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
推荐阅读
LV.
文章
0
获赞
0
  • 社区

    • 技术文章
    • 技术问答
    • 技术沙龙
    • 技术视频
    • 学习中心
    • 技术百科
    • 技术专区
  • 活动

    • 自媒体同步曝光计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2024 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
不开心的消防车  ·  关于libpng warning: iCCP: known incorrect sRGB profile 报错的解决_imagecreatefrompng(): gd-png: libpng warn
1 年前
爱旅游的红烧肉  ·  PHP调试跟踪之XDebug使用总结_xdebug如何使用-CSDN博客
1 年前
有胆有识的香槟  ·  Koa 本地搭建 HTTPS 环境 - 刘哇勇 - 博客园
2 年前
长情的山羊  ·  Vue3实战——项目搭建(二) - 简书
2 年前
还单身的松球  ·  pandas使用技巧【18】找到和移除重复行 - 简书
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号