VBA字典与数组第十九讲:VBA中动态数组的定义及创建

news2024/12/22 9:50:47

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:VBA字典与数组第十九讲:VBA中动态数组的定义及创建

c96811c11b9913c295bcf9a3f84ea896.jpeg

【分享成果,随喜正能量】位置不同,少言为贵,认知不同,不争不辩,三观不合,浪费口舌。。

第十九讲 VBA中动态数组的定义及创建

大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有大小的数组。当我们事先知道数组的大小,我们可以直接声明为静态数组。

静态数组定义方法:DIM 数组名(<下届>TO<上届>)。

1 动态数组的声明及特点

但如果事前不知道数组大小时,怎么办呢?在事前不知道数组的大小时,可以声明数组为动态数组,在需要指定数组大小时,再使用ReDim语句分配数组的实际元素的个数。

1) 动态数组是可以改变大小的数组,通过在数组名称后附带空括号来声明,如:

Dim arrSheetName() as String

2) 在定义动态数组之后,必须使用ReDim来设置动态数组的上界和下界,为数组重新分配存储空间。

3)我们可以使用ReDim语句反复地改变数组的元素个数。

2 动态数组应用实例

下面我们将通过一个实例来讲解动态数组的利用:

  比如一个工作表的C列存储了学生姓名,现在我们需要把有姓“王”的学生存储在数组arr中,预先我们并不知道C列姓王的学生有三十个还是五十个,所以,我们在定义时代码可以这样:

Sub MyNZsz_2()

Dim arr() As String

erow = [c65536].End(3).Row '最后一个非空单元格行号

j = 1 '数组索引号

xcount = Application.WorksheetFunction.CountIf([c1:c65536], "王*") '统计有多少姓王的学生

ReDim arr(1 To xcount) '重新定义数组大小,元素共有xcount个

For i = 1 To erow

If Left(Cells(i, 3).Value, 1) = "王" Then

arr(j) = Cells(i, 3).Value '给数组元素赋值

j = j + 1 '索引号加1

End If

Next i

[d1:d65536].Clear '清除原有数据

[d1].Resize(xcount, 1) = Application.WorksheetFunction.Transpose(arr) '将数组输入单元格区域

End Sub

代码截图:

1eaf3f8ffd47a4309870cd1257bb259c.jpeg

代码的解读:

1) Dim arr() As String 定义了一个动态数组。

2) xcount = Application.WorksheetFunction.CountIf([c1:c65536], "王*") '统计有多少姓王的学生

ReDim arr(1 To xcount) '重新定义数组大小,元素共有xcount个

通过求出姓王的学生的个数从而知道数组的上下界

3) Application.WorksheetFunction.Transpose(arr) 讲数组arr 的内容转置填充,对于一维数组来说,中间是以逗号分隔的,如果想纵向填充,要进行转置,这可以结合之前工作表数组的表述来理解,逗号是分列,分号是分行。

运行结果:

7beef23da126d81c9bd55d2d0cab7305.jpeg

今日内容回向;

1 什么是动态数组?

2 动态数组和静态数组有什么区别?

625bbc782fedde36221e6cdbc176c425.jpeg

我多年的VBA实践经验,全部浓缩在以下教程中:

8968ca00fdd831d8eb7aebdddb2f25f0.jpeg

8a6cc7755949cec900800d399ae46cb0.jpeg



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文笔记】Visual Instruction Tuning

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Visual Instruction Tunin…

Linux线程(二)线程ID及创建线程详解

1.线程ID 就像每个进程都有一个进程 ID 一样&#xff0c;每个线程也有其对应的标识&#xff0c;称为线程 ID。进程 ID 在整个系统中是唯一的&#xff0c;但线程 ID 不同&#xff0c;线程 ID 只有在它所属的进程上下文中才有意义。 进程 ID 使用 pid_t 数据类型来表示&#xf…

【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;Linux “ 登神长阶 ” &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀Linux进程间通信 &#x1f4d2;1. 进程间通信介绍&#x1f4da;2. 什么是管道&#x1f4dc;3…

22.1 k8s不同role级别的服务发现

本节重点介绍 : 服务发现的应用3种采集的k8s服务发现role 容器基础资源指标 role :nodek8s服务组件指标 role :endpoint部署在pod中业务埋点指标 role :pod 服务发现的应用 所有组件将自身指标暴露在各自的服务端口上&#xff0c;prometheus通过pull过来拉取指标但是promet…

期权卖方如何选择铁矿石行权价?期权策略盈亏分析计算方式详解

截止9月30日收盘&#xff0c;铁矿石2411合约收盘价825元/吨。日线级别处于上涨趋势中 假设以825元为最新价&#xff0c;假设后市铁矿石期货价格会下跌&#xff0c;期权卖方应该如何选择行权&#xff1f; 卖出行权价800的看涨期权&#xff0c;期权报价37.9&#xff0c;一手权利…

【环境配置】科研小白Windows下安装Git

2024年小白使用Win10安装Git 2.46.2教程&#xff1a; 1 下载安装包 访问下载地址 Git - Downloading Package (git-scm.com) 下载之后打开文件 2 安装过程 点击Next 2.1 选择安装路径 2.2 选择勾选必要组件 2.3 一路Next 这一步直接Next即可 继续点击Next 继续点击Ne…

Linux学习之路 -- 线程 -- 线程池

前面介绍了条件变量的生产消费模型&#xff0c;下面介绍一下条件变量的另一个用法&#xff0c;那就是线程池。线程池的用法其实就是先创建一批线程&#xff0c;然后让这些线程从任务队列中取数据。具体就是生产消费者模型&#xff0c;(我的代码中生产线程只有一个并且生产的任务…

自动微分-梯度!

前言背景知识&#xff1a; 梯度下降(Gradient descent,GD) 正文&#xff1a; 自动微分为机器学习、深度学习神经网络的核心知识之一&#xff0c;若想更深一步使用神经网络进行具体问题研究&#xff0c;那么自动微分不得不了解。 “工欲善其事&#xff0c;必先利其器”&…

数据结构 ——— 单链表oj题:合并两个升序链表

目录 题目要求 手搓两个简易链表 代码实现 题目要求 将两个升序链表合并为一个新的升序链表并返回&#xff0c;新链表是通过拼接给定的两个链表的所有节点组成的 手搓两个简易链表 代码演示&#xff1a; struct ListNode* n1 (struct ListNode*)malloc(sizeof(struct …

【Linux】第一个小程序——进度条实现

&#x1f525; 个人主页&#xff1a;大耳朵土土垚 &#x1f525; 所属专栏&#xff1a;Linux系统编程 这里将会不定期更新有关Linux的内容&#xff0c;欢迎大家点赞&#xff0c;收藏&#xff0c;评论&#x1f973;&#x1f973;&#x1f389;&#x1f389;&#x1f389; 文章目…

【Python报错已解决】TypeError: ‘NoneType‘ object is not iterable

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

Android KMP 快速入门1 - 项目打包

这里写目录标题 KMP 运行与打包运行程序程序打包 KMP 运行与打包 运行程序 运行Android客户端&#xff0c;你首先需要把USB连接到物理机上&#xff0c;或者使用模拟器模拟一个手机&#xff1b; 然后选择运行配置的 composeApp &#xff0c;运行它即可 运行windows客户端&…

Qt/C++开源控件 自定义雷达控件

使用Qt框架创建一个简单的雷达图&#xff0c;包含动态扫描、目标点生成、刻度和方向标识。代码实现使用C编写&#xff0c;适合用作学习和扩展的基础。 1. 头文件与基本设置 #include "RadarWidget.h" #include <QPainter> #include <QPen> #include &…

解决银河麒麟操作系统V10软件包架构不符问题

TOC &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在银河麒麟桌面操作系统V10中安装软件包时&#xff0c;如果遇到“软件架构与本机架构不符”的提示&#xff0c;可以尝试以下步骤来解决问题&#xff1a; 1. 确认架构一致性 查看本机架构…

基于STM32的智能门禁系统

目录 引言项目背景环境准备 硬件准备软件安装与配置系统设计 系统架构关键技术代码示例 密码验证模块电机控制实现门禁状态监控应用场景结论 1. 引言 智能门禁系统能够通过密码或其他验证方式&#xff08;如指纹、刷卡等&#xff09;控制门的开关&#xff0c;结合电机控制与…

2024年7月大众点评武汉餐饮美食店铺基础信息

在做一些城市分析、学术研究分析、商业选址、商业布局分析等数据分析挖掘时&#xff0c;大众点评的数据参考价值非常大&#xff0c;截至2024年7月&#xff0c;大众点评美食店铺剔除了暂停营业、停止营业后的最新数据情况分析如下。 武汉餐饮美食店铺约9.6万家&#xff0c;有均…

MySQL高阶2051-商店中每个成员的级别

目录 题目 准备数据 分析数据 实现 总结 题目 一个商店想对其成员进行分类。有三个层次: "钻石": 如果转换率 大于或等于 80."黄金": 如果转换率 大于或等于 50 且小于 80."白银": 如果转化率 小于 50."青铜": 如果该成员从未访…

澳洲本科毕业论文的初稿撰写要点分析

临近毕业季的时候&#xff0c;如何更好地完成澳洲本科毕业论文成为了困扰大家的一大难题。澳洲毕业论文的质量高低关系到留学生能否顺利毕业。因此大家都会关心如何更好地完成毕业论文。我们在之前一些文章中介绍了如何确立论点&#xff0c;如何查找资料以及如何完成高质量的di…

HarmonyOS/OpenHarmony 如何将rawfile中文件复制到沙箱中

关键词&#xff1a;h5离线加载、HarmonyOS、OpenHarmony、文件操作、复制、解压 当下有一个场景&#xff0c;需要离线加载 h5离线资源zip包&#xff0c;并实现资源包的动态更新&#xff0c;那么仅靠 $rawfile并不能实现该功能&#xff0c;那么我们该如何实现&#xff1f; 我们…