Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA中数组、集合和字典(二)——对数组变量的赋值

VBA中数组、集合和字典(二)——对数组变量的赋值

原创
作者头像
用户8870853
修改于 2021-07-27 03:04:24
修改于 2021-07-27 03:04:24
7.3K0
举报

上次我们对比学习了一下ExcelVBA中数组、集合和字典的概念和声明语法,我个人觉得在声明部分,三者的区别还是挺大的。下面我们一块学习一下赋值方面的知识点,因为内容较多,我们今天就先学习一下给数组变量赋值的内容

三、赋值

不管是数组、集合还是字典,都有向变量赋值的操作,赋值也是这几个概念的核心和关键,操作也有很大不同。

1.向数组变量赋值

对数组来说,数组中的每个元素数据类型必须相同,从数组声明就可以看出,这是数组与集合和字典的明显不同。这就要求向数组变量赋值时的数据规范必须严格。

a.向数组中单个数组元素的赋值

当数组已经确定了长度,我们就可以对数组内的元素进行赋值。可以对数组中某一具体索引位置的数组元素进行写入的,如下图:

当数组长度还不确定,在代码运行过程中发现有满足条件的值时,才扩大数组长度,再将值赋给单个数组元素。这样的需求该怎么办呢?

例如有个题目,求100以内自然数中,第7个数字2和数字3的公倍数。

有的小伙伴很快就想到了思路,首先定义一个动态数组arr,然后从1到100开始循环遍历,当数字循环到2和3的公倍数时,ReDim该数组的长度为y,并把当前数字添加进数组,y自增加1,再循环到符合条件的数字时,再ReDim该数组的长度为y,再把当前数字添加进数组,依次循环到100,循环结束后,通过arr(索引)就得到了结果。我们按照这个思路写下代码,如下图:

在逐行运行时,我们观察一下本地窗口中,各个参数的值,如下图:

我们发现,在循环到第一个满足条件的数字6时,将6添加到数组中,这时是正常的,但是当循环到第二个满足条件的数字12时,在运行Redim arr(y)这行代码时,会将数组置空,之后才会将满图条件的数字放入到数组的第二个位置,像这样循环到最后,数组中只会存着最后一个满足条件的值,前边的都会被置空。这种情况是我们不想要的,我们只想扩大一下数组,之前填充到数组中的内容是不想改变的。

于是,我们在循环中重定义数组的代码中加上ReDim的参数Preserve,它的意思就是当arr是一个动态数组,用ReDim Preserve重定义arr修改长度时,不清空之前数组中的元素(Redim 不能重定义静态数组的长度)。我们再试一下,如下图:

如果在ReDim中使用了Preserve可选参数,只能调整数组最后维的大小,并且不能改变数组的维数。例如,如果数组只有一维,就可以修改该数组的大小,因为该维是最后的也是仅有的一维。但是,如果数组有两个或者更多维,就只能改变末维的大小并保留数组内容。

ReDim Preserve重定义数组长度时,该数组在声明时必须是动态数组,即Dim arr(),不能声明成Variant类型(即不能Dim arr或者Dim arr as Variant),否则都会报错。

b.向数组变量整体赋值

整体赋值的意思就是把一个数组直接赋值给数组变量,而不是通过对单个数组元素的赋值。整体赋值要求数组变量在声明时必须声明为动态数组或者Variant类型,不能向声明为静态数组的变量赋值,如果声明成静态数组的变量被整体赋值,即使数组长度一致,也会报错。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
asp动态数组
本文所说的 ASP 数组是指在 ASP 中以默认语言 VBScript 为语言的数组。
全栈程序员站长
2022/07/09
6.4K0
VBA数组(六)动态数组
大家好,前面已经介绍过了如何声明数组、数组赋值、静态数组和数组函数等等知识点,本节主要讲解动态数组。
无言之月
2019/10/13
7.5K0
VBA中动态数组的定义及创建
大家好,今日我们继续讲解VBA数组与字典解决方案的第19讲:动态数组的定义及创建。在VBA中,数组可分为固定数组和动态数组,也称为静态数组和动态数组。我们之前所定义的数组,都是静态数组。静态数组的特点是具有大小的数组。当我们事先知道数组的大小,我们可以直接声明为静态数组。固定数组定义方法:DIM 数组名(<下届>TO<上届>)。
用户8870853
2021/07/27
3.7K0
VBA数组(二)声明数组
大家好,上节介绍了数组的维度,索引号、上界和下界的知识,本节继续介绍数组的基础知识,包括数组的分类,以及如何声明数组。关于数组的内容相对抽象,会尽量介绍详尽。
无言之月
2019/10/13
3.6K0
Excel VBA解读(153): 数据结构——基本的数组操作
创建了一个可以容纳6个Long型数据的数组,第一个元素的索引值为0,最后一个元素的索引值为5,如下图1所示。
fanjy
2019/07/25
2.5K0
VB.NET 数组的定义 动态使用 多维数组
我们都知道在全部程序设计语言中数组都是一个非常重要的概念,数组的作用是同意程序猿用同一个名称来引用多个变量,因此採用数组索引来区分这些变量。非常多情况下利用数组索引来设置一个循环,这样就能够高效地处理复杂的情况,因此在非常多情况下,使用数组能够缩短或者简化程序的代码。本文主要介绍VB.NET数组的使用,希望对大家的使用带来帮助。
全栈程序员站长
2022/07/13
3.7K0
VBA数组(三)数组赋值
大家好,上节介绍了在使用数组之前如何声明数组,本节就来介绍静态数组如何赋值。(动态数组会单独一节讲解)
无言之月
2019/10/13
12.6K0
VBA编程练习01. 拆分算术表达式
引子:本系列旨在通过一些编程练习,锻炼我们的编程思考能力,提高编码水平,更好地帮助我们解决实际问题。
fanjy
2019/07/19
9060
VBA数组(四)数组函数
VBA中操作数组的函数主要有以下几个,LBound函数和UBound函数、Array函数、IsArray函数、Erase函数、Split函数、Join函数,后面分两节介绍数组函数。
无言之月
2019/10/13
5.9K0
MQL5从入门到精通【第二章】变量与数据类型(二)
我们讲了变量和数据类型,都是单个的变量,及其值。那么这个数组,是用来装载多个数据的一种结构。你可以把数组想象为一个数字列表,每个数字对应不同的值。可以从头按照数字遍历这个列表,并获取其相对应的值。
程序员小助手
2020/04/08
1.2K0
VBA数组(五)数组函数2
大家好,上节介绍了VBA数组中的LBound和UBound等函数,本节介绍剩余的数组函数,Erase函数、Split函数和Join函数。
无言之月
2019/10/13
3.2K0
VBA基础知识整理[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136348.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/06
1.9K0
VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)
VBA/VB6移除数组中重复的数据 需要引用 'Microsoft Scripting Runtime' Function ArrDelAsMe(ByVal arr As Variant) As Variant ''数组去重复项包括重复项自身 ' 这个函数是移除数组中重复的数据,包括自身
办公魔盒
2019/07/22
5.8K0
VB6,VBA数组去重复项函数(2个一个单去重,一个去重含自身)
VBA多维数组转一维数组
在VBA中,join函数可以快速的将一个String类型的数组连接成一个字符串,用的还比较多。
xyj
2021/06/22
2.5K0
VBA多维数组转一维数组
动态数组是啥
当小白抱着这个问题去问大佬的时候,80%的回答就是:动态数组就是可以变化长度的数组,就这么简单,没啥难度。
全栈程序员站长
2022/11/16
6740
Go 语言基础入门教程 —— 数据类型篇:数组及其使用
数组是所有语言编程中最常用的数据结构之一,Go 语言也不例外,与 PHP、JavaScript 等弱类型动态语言不同,在 Go 语言中,数组是固定长度的、同一类型的数据集合。数组中包含的每个数据项被称为数组元素,一个数组包含的元素个数被称为数组的长度。
学院君
2019/08/08
9860
GO语言基础之数组
1、数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。 2、数组长度必须是常量。一旦定义,长度不能变。 3、数组可以通过下标进行访问,第一个元素索引为 0,第二个索引为 1,最后一个元素索引是:len-1 4、数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。
墨紫羽墨
2022/02/27
3530
在VBA中对数组排序的代码
这是一段非常好的代码,来自ozgrid.com,可以使用它来快速排序VBA中的数组。
fanjy
2023/09/21
1.3K0
在VBA中对数组排序的代码
Go 数据类型篇(五):数组使用入门
数组是所有语言编程中最常用的数据结构之一,Go 语言也不例外,与 PHP、JavaScript 等弱类型动态语言不同,在 Go 语言中,数组是固定长度的、同一类型的数据集合。数组中包含的每个数据项被称为数组元素,一个数组包含的元素个数被称为数组的长度。
学院君
2023/03/03
4720
Go 数据类型篇(五):数组使用入门
Internet Explorer漏洞分析(三)[上]——VBScript Scripting Engine初探
近来分析Internet Explorer历史漏洞,遂对VBScript脚本解析引擎进行研究,具体环境如下:
Gcow安全团队
2021/03/19
9670
相关推荐
asp动态数组
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档