-
VBA数组赋值
2012-04-05 23:30:05先说一下,刚才一个错误...数组是这样赋值的: Dim a2(10) As Integer '10是可以使用的最大上标,这和C语言不太一样 Dim a3(-2 To 10) As Integer '也可以定义下标 Dim a1() As Integer '定义变长数组...先说一下,刚才一个错误的操作,连保存的草稿都没了,这也太悬了。以后还是在本地写好了再放上来。
数组是这样赋值的:
Dim a2(10) As Integer
'10是可以使用的最大上标,这和C语言不太一样
Dim a3(-2 To 10) As Integer
'也可以定义下标
Dim a1() As Integer
'定义变长数组 动态数组
ReDim a1(10)
'重新定义数组的长度
如果需要保存原来的数组中的数据,则使用:
ReDim Preserve a1(10)
如有特殊需要要将下标默认定义为1,则需要声明:
Option Base 1
Debug.Print LBound(a1)
Debug.Print UBound(a1)
显示数组的上下界
定义二维数组:
Dim MyArray(-2 To 9, -8 To 12)
当定义好了一个数组,可以直接赋值给另外一个
MyArray2 = MyArray1
清除数组
erase MyArray2
清除之后数组内部成为初始值,对于动态数组来说,在没有赋数组长度值时,没有上下界,清除之后也没有,如果使用UBound,运行时会出现错误。
erase之后,动态数组并不是不存在了,这一点从可以继续redim就可以知道。这一点《Excel VBA 入门与应用典型实例》说错了。 -
vba 数组赋值_VBA数组与字典解决方案第18讲:VBA中静态数组的定义及创建
2020-12-11 13:19:51大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算...大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?
从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算甚至可以看做是程序的运行,能够理解工作表数组的运算过程对于VBA代码的书写是非常有益的,但VBA数组在大多数情况下,只是作为变量来存储数据。这点和工作表数组有很大的不同。
一、什么是VBA数组 所谓VBA数组,就是共享一个名字,有着多个元素按顺序排列的变量。数组中的数据具有相同的类型和结构,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。
二、如何定义数组 数组在使用前必须要进行声明,声名数组同声明其他变量的方式一样,也是用Dim语句来声明。唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。一般情况下使用较多的是一维数组和两维数组,需要注意的是数组要以字母开头,所用的字符仅限字母、数字和下下划线,不允许出现标点符号和空格。当声明了一个数组,便决定了这个数组用于存储数数据所用的内存空间。
默认情况下数组是以0为下届,也就是Option Base 0大多数情况下我们都是遵守此默认情况的,并且在用数组时忽略数组的第一个元素,上届不能超过LONG数据类型的范围,而且上届值不能小于下届值。
如果我们习惯了用1作为我们的下界,可以强制声明:Option Base 1,需要注意的是Option Base 0(1)必须放在所有模块之前。当然,我们也可以忽略这个强制声明,那我们就需要在声明数组时,指明数组的上界和下界,如:Dim arrSheetName(1 to 3) as String表明这个数组的上下界分别是1和3
下面我们讲通过一个实例来说明数组的声明及赋值,如下面的代码:
Sub Mynzsz() '第18讲 VBA数组的定义及创建
Dim i As Integer, j As Integer
Dim arr(1 To 10, 1 To 2) As Integer '定义一个10*2的二维数组(10行,2列)
j = 1 '数组1 to 10的索引号
For i = 1 To 20 Step 2
arr(j, 1) = i '赋值
arr(j, 2) = i + 1 '赋值
j = j + 1 '索引号增加
Next
[a1:b65536].ClearContents '清除原有数据
[a1].Resize(10, 2) = arr '将数组赋值给A1单元格向下10行,向右2列的区域
End Sub
代码截图:
代码讲解:
1 Dim arr(1 To 10, 1 To 2) As Integer 这里给出了数组的范围最小的是arr(1, 1),最大的是
arr(10, 2)
2 [a1].Resize(10, 2) = arr 讲数组回填给工作表。大家是否理解arr的意义呢?我们看看下面的图:
arr 是一个集合。这个集合包括了20个元素(或者叫变量),分别是arr(1,1);arr(2,1);arr(1,2);arr(2,2);arr(1,3);arr(2,3);arr(1,4);arr(2,4);arr(1,5);arr(2,5);arr(1,6);arr(2,6);arr(1,7);arr(2,7);arr(1,8);arr(2,8);arr(1,9);arr(2,9);arr(1,10);arr(2,10)
运行后:
今日内容回向:
1 什么是VBA数组。
2 VBA数组如何声明?
-
vba 数组赋值_VBA中静态数组的定义及创建
2020-12-11 13:19:44大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算...大家好,我们今日继续讲解VBA数组与字典解决方案,今日讲解第18讲:VBA数组如何定义,又该如何创建呢?
从这一讲开始,我们开始进入VBA数组阶段,VBA数组和工作表数组有着不同的意义,在很大程度上,工作表数组的运算甚至可以看做是程序的运行,能够理解工作表数组的运算过程对于VBA代码的书写是非常有益的,但VBA数组在大多数情况下,只是作为变量来存储数据。这点和工作表数组有很大的不同。
一、什么是VBA数组 所谓VBA数组,就是共享一个名字,有着多个元素按顺序排列的变量。数组中的数据具有相同的类型和结构,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。
二、如何定义数组 数组在使用前必须要进行声明,声名数组同声明其他变量的方式一样,也是用Dim语句来声明。唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。一般情况下使用较多的是一维数组和两维数组,需要注意的是数组要以字母开头,所用的字符仅限字母、数字和下下划线,不允许出现标点符号和空格。当声明了一个数组,便决定了这个数组用于存储数数据所用的内存空间。
默认情况下数组是以0为下届,也就是Option Base 0大多数情况下我们都是遵守此默认情况的,并且在用数组时忽略数组的第一个元素,上届不能超过LONG数据类型的范围,而且上届值不能小于下届值。
如果我们习惯了用1作为我们的下界,可以强制声明:Option Base 1,需要注意的是Option Base 0(1)必须放在所有模块之前。当然,我们也可以忽略这个强制声明,那我们就需要在声明数组时,指明数组的上界和下界,如:Dim arrSheetName(1 to 3) as String表明这个数组的上下界分别是1和3
下面我们讲通过一个实例来说明数组的声明及赋值,如下面的代码:
Sub Mynzsz() '第18讲 VBA数组的定义及创建
Dim i As Integer, j As Integer
Dim arr(1 To 10, 1 To 2) As Integer '定义一个10*2的二维数组(10行,2列)
j = 1 '数组1 to 10的索引号
For i = 1 To 20 Step 2
arr(j, 1) = i '赋值
arr(j, 2) = i + 1 '赋值
j = j + 1 '索引号增加
Next
[a1:b65536].ClearContents '清除原有数据
[a1].Resize(10, 2) = arr '将数组赋值给A1单元格向下10行,向右2列的区域
End Sub
代码截图:
代码讲解:
1 Dim arr(1 To 10, 1 To 2) As Integer 这里给出了数组的范围最小的是arr(1, 1),最大的是
arr(10, 2)
2 [a1].Resize(10, 2) = arr 讲数组回填给工作表。大家是否理解arr的意义呢?我们看看下面的图:
arr 是一个集合。这个集合包括了20个元素(或者叫变量),分别是arr(1,1);arr(2,1);arr(1,2);arr(2,2);arr(1,3);arr(2,3);arr(1,4);arr(2,4);arr(1,5);arr(2,5);arr(1,6);arr(2,6);arr(1,7);arr(2,7);arr(1,8);arr(2,8);arr(1,9);arr(2,9);arr(1,10);arr(2,10)
运行后:
今日内容回向:
1 什么是VBA数组。
2 VBA数组如何声明?
-
vba 数组赋值_VBA数组与字典解决方案第31讲:VBA数组声明及赋值后的回填方法
2020-12-11 15:09:42大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度...大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度,再次讲解,大家才能有真正的收获。
一 我们先看看下面的声明方法
1 Dim arr as Variant
2 Dim arr(1 to 10, 1 to 2 )
3 dim arr()
4 ReDim arr(1 To k)
我们分析一下各种声明方法:
第一种:声明通常用于单元格直接装入数组如:
arr =range("a9:c100")
这种装入非常简单,直接用变量 = 单元格区域即可。但是这里要注意的是对于这种写入时数组的声明只能是:
Dim arr as Variant
这时,声明一个变量,不能声明其他数据类型。
第二种:通常用于一个固定数组的声明,同时给出了数组的上下界。这种声明要注意的是不能一次性的装入单元格的数据,要靠循环
第三种,是一个动态数组的声明,也就是说,我们在命名数组时还不知道数组的大小,要靠后期的再次定义
第四种 是再次声明arr的大小,以正好盛下k数量的值。
二 把单元格数据填入数组和数组数据的回填
我们利用数组就是为了计算,下面我们看看把工作表中的数据填入数组,及计算后数组数据回填给工作表单元格的方法,看我给出的代码:
Sub MyNZsz_31() '第31讲 数组的声明及赋值的回填
Dim arr As Variant '注意此处的Variant
Dim brr() '注意此处定义了一个动态数组
Sheets("31").Select
arr = Sheets("31").UsedRange 'Usedrange的行数和列数是未知的
MsgBox UBound(arr, 1) '可以计算这个区域有多少行
MsgBox UBound(arr, 2) '可以计算出这个区域有多少列
ReDim brr(1 To UBound(arr, 1), 1 To UBound(arr, 2))
For x = 1 To UBound(arr, 1) '通过循环在arr数组中循环
For y = 1 To UBound(arr, 2)
brr(x, y) = arr(x, y) * arr(x, y) '数组自身相乘
Next
Next
'把数组放回到单元格中
Range("A" & Range("A1").End(xlDown).Row + 2).Resize(UBound(arr, 1), UBound(arr, 2)) = brr
End Sub
代码截图:
代码的讲解:此代码在代码部分我都做了详细的注释,不再一一讲解了,仅看看下面的这句代码:
Range("A" & Range("A1").End(xlDown).Row + 2).Resize(UBound(arr, 1), UBound(arr, 2)) = brr
这句设定了数组回填的区域大小,注意这个区域必须和数组的大小要一致,不然会产生错误。所以我利用了Resize(UBound(arr, 1), UBound(arr, 2))来保证这一点。
下面我们看代码的运行:
运行前:
运行,先提示行数:
再提示列数:
最后看结果:
今日内容回向:
1 如何给数组声明?
2 上述实例如果再次运行一下会有什么结果呢?
-
vba 数组赋值_将工作表数据写入VBA数组
2020-12-11 13:23:23第二节 将工作表数据写入VBA数组在上一节中我们讲了实现工作表数据与VBA代码间传输的几种方法,这讲我将我们将着重讲解如何将工作表的数据写入数组。1 读取工作表上的范围并将其放入数组在VBA中,可以直接读... -
VBA数组赋值(2/2)-- 二维数组
2020-04-04 02:16:19以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为二维数组赋值(或者说如何创建二维数组)。 -
VBA数组赋值(1/2)-- 一维数组
2020-04-04 02:15:16以前的博客文章中讲过一些数组的使用技巧,经常会被网友问道如何给数组赋值,本文讲解如何为一维数组赋值(或者说如何创建一维数组)。 -
vba 数组赋值_VBA数组是什么?有何作用?你只需用1分钟就明白它有什么作用啦...
2020-12-11 13:22:49Hello,大家好,在前面我们说过Excel函数中间的数组含义,...VBA数组可以理解成是储存的一组数据的一个地方。他的数据类型可以是数字,文本,对象,当然也可以是VBA数组。可能有些同学会觉得比较抽象,但是经过慢慢... -
vba 数组赋值_VBA中利用数组上下标快速求出数组元素个数的方法
2020-12-11 13:23:19大家好,今日继续和大家分享VBA编程中常用的常用“积木”过程代码。这些内容大多是我的... 224:数组函数JOIN的作用VBA过程代码223:计算数组的上标下标及元素的个数值 Sub Mynz () Dim arr(10 To 50) Dim brr(1... -
vba 数组赋值_多对多条件查询的VBA应用方案
2020-12-11 13:19:44VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这些资料就是我多年经验的记录,都来源于我多年的实践。大家在学习VBA的时候,可以把这些代码块作为一块块的积木对待,平时积累,用时拿来修正、组合。这... -
python数组赋值给另一个数组_VBA数组(三)数组赋值
2020-12-05 13:57:39(动态数组会单独一节讲解)上 节 复 习在介绍数组赋值之前,首先简单复习下上节介绍的声明数组和数组中元素的表示方法。以常用的二维数组为例,声明一个3*4的二维数组arr1,数据类型为字符串型。dim arr1(2,3) as ... -
一个数组赋值给另一个数组_VBA数组与字典解决方案第31讲:VBA数组声明及赋值后的回填方法...
2020-12-18 21:13:36大家好,我们今日继续VBA数组与字典解决方案,今日讲解VBA数组的声明,一些朋友会问了:数组都讲了这么长时间了,怎么才讲声明啊?是的,有些知识不到一定的程度即使讲了,大家也不能深入的理解,只有到了一定的程度... -
access vba 常量数组赋值_VBA数组的声明及应用
2020-11-24 15:12:07Hi ,大家好,通过此前的VBA编程基础和VBA编程应用的一些教程,大家对于VBA的编程和实际的应用,基本上已经有一些了解,并且应该是可以自行实现...今天就给大家介绍一个更高级的数据结构---数组数组数组是一组顺序索... -
access vba 常量数组赋值_聊聊 VBA 数组的那些坑
2020-11-24 11:31:42为什么使用数组?1. 缩减工作薄文件大小,提高运行效率一般而言只是使用 Excel 的内置工作表函数,在运算方面还是很高效的,但有时因为一个单元格牵扯的计算太多,比如调用多单元格数据,对结果文本进行部分替换,... -
二维数组 类型_VBA数组(三)数组赋值
2021-01-12 05:32:41(动态数组会单独一节讲解)上 节 复 习在介绍数组赋值之前,首先简单复习下上节介绍的声明数组和数组中元素的表示方法。以常用的二维数组为例,声明一个3*4的二维数组arr1,数据类型为字符串型。dim arr1(2,3) as ... -
android 数组赋值字符串_聊聊 VBA 数组的那些坑
2020-12-30 20:06:10为什么使用数组?1. 缩减工作薄文件大小,提高运行效率一般而言只是使用 Excel 的内置工作表函数,在运算方面还是很高效的,但有时因为一个单元格牵扯的计算太多,比如调用多单元格数据,对结果文本进行部分替换,... -
vba给数组赋值
2016-02-24 11:41:05'向VBA数组中写入数据 '1、按编号(标)写入和读取 Sub t1() '写入一维数组 Dim x As Integer Dim arr(1 To 10) arr(2) = 190 arr(10) = 5 End Sub Sub t2() '向二维数组写入数据和读取 ... -
如何手动输入给数组赋值_你是否真的了解VBA数组呢?让我带你认识一下真正的数组...
2020-12-05 14:09:27大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解,什么是数组,如何定义数组,如何创建数组一、什么是数组 就是数组共享一个名字,有着多个元素按顺序排列的变量。在数组中,元素通过索引加以... -
access vba 常量数组赋值_VBA中利用数组进行数据批量处理的方法
2020-11-27 08:14:32大家好,今日继续和大家分享VBA编程中常用的常用“积木”过程代码。... 226:将数组的值批量回填给工作表的办法VBA过程代码225:数组的赋值和回填工作表Sub Mynz () '创建数组,并赋值 Dim arr(1 To 60000), i ... -
python数组赋值给另一个数组_如何使用VBA代码给数组赋值及回填
2020-12-04 14:13:37VBA++ 题记:一剪闲云一溪月,一程山水一年华。一世浮生一刹那,一树菩提一烟霞。岁月静好,现世安稳。纵算云水漂泊,心若安宁,亦可淡若清风。希望见者与不见者都能安康。静下心,多学习有用的知识,多提高自己的... -
vba 动态数组赋值,数组下标越界错误
2016-01-06 03:10:30数组大小不确定,不适合直接给较大的固定长度,直接赋值会出现数组下标越界的错误,该怎么办 -
access vba 常量数组赋值_09c语言数组详解
2020-11-03 17:35:43数组在程序设计中,为了处理方便, 把具有相同...因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。数值数组 数组说明的一般形式为:类型说明符 数组名 [常量表达式],... -
二维数组 赋值_【VBA】数组的应用
2021-01-12 05:32:41任何编程语言都离不开数组的应用,同样的,VBA也不例外,今天给大家讲讲...如下代码,我定义了一个数组,然后给数组赋值,再将数组的数据赋值给单元格中。二维数组其实就是一组多行多列的数据。如下代码,我定义了一... -
VBA 不能给数组赋值--array() 或[{}] 都不可以对静态数组赋值
2019-12-23 18:15:31'所谓的不能给数组赋值 'Dim arr2(3 To 15) 这里结合是错误的 'array()函数返回的必须是变量,或变量对等的动态数组,不能赋值给静态数组 'arr2 = [{3, 4, 5, "6", 7, 0, 1, 2, 8, 9}] 也不行 'arr2() = Array(3, 4,... -
巧用公式实现VBA数组快速赋值
2020-07-03 06:44:53VBA中可以使用数组处理工作表中的数据,是个尽人皆知的秘密了,读取数据加载到数组中也很简单。 工作表中数据如下图所示,需要将B1:G1的内容加载到数组中。这个该如何弄到一个数组中呢,先分别读入数组,然后再使用...