×

vba多维数组赋值

vba多维数组赋值(请问VBA怎么定义包含不同数据类型的多维数组)

admin admin 发表于2024-05-05 03:35:56 浏览22 评论0

抢沙发发表评论

大家好,今天小编来为大家解答以下的问题,关于vba多维数组赋值,请问VBA怎么定义包含不同数据类型的多维数组这个很多人还不知道,现在让我们一起来看看吧!

本文目录

请问VBA怎么定义包含不同数据类型的多维数组

在vba中是无法实现的。一个数组被定义的时候已经指明了其类型,你无法使用不同的类型唯一能够用来变通的就是将这些不同的数据类型打包为一个新的数据对象或者结构体然后将数组声明为这个新的数据对象或者结构体的类型

vba 建立一个二维数组如下:

我有一个办法:用array函数,一个array可以代表一个一维数组,相互嵌套就可以表示多维,如下面创建一个两维数组。Dim hzhz = Array(Array(1, 6, 37, 38, 39, 40), Array(1, 6, 37, 38, 39, 40))特别注意:引用时不能用一般的二维数组比如 hz(1,2) 的方式去引用,而是用 hz(1)(2)的方式。而且数组下标都是默认从0开始的。如果要方便从1开始,我感觉也只能用循环逐个赋值的方法,如楼下的做法。

VBA将多维数组转换为一维数组

能 把这个二维数组赋值给单元格,再将你要转换的那一行直接赋值给新的一维数组 如果直接操作数组而不通过其他中间过程并且不用循环,好像是不可以的。

vba怎么给字母赋值

给变量赋值创建如下形式的表达式给变量赋值:变量在表达式左边,要赋的值在表达式右边。例如: B = 200标量变量和数组变量多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量,称为数组变量。数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号 ( )。下例声明了一个包含 11 个元素的一维数组: Dim A(10) ’这种带确定的值一看我们就说他是静态数组,因为他给出他的长度。虽然括号中显示的数字是 10,但由于在 VBScript 中所有数组都是基于 0 的,所以这个数组实际上包含 11 个元素。在基于 0 的数组中,数组元素的数目总是括号中显示的数目加 1。这种数组被称为固定大小的数组。在数组中使用索引为数组的每个元素赋值。从 0 到 10,将数据赋给数组的元素,如下所示: A(0) = 256 . . . A(10) = 55与此类似,使用索引可以检索到所需的数组元素的数据。仔细体会下面的程式:我已复制到VBE中,你可以打开VBE,然后运行看一下。Sub 数组()Dim arr1 As Integer MsgBox arr1 arr1 = Array("1", "2", "3") MsgBox arr1(0) MsgBox arr1(1) MsgBox arr1(2) arr1 = 0 MsgBox arr1End SubSub 数组2()Dim arr1(3) As Integer arr1(0) = 0 arr1(1) = 1 arr1(2) = 2 arr1(3) = 3 MsgBox arr1(0) MsgBox arr1(1) MsgBox arr1(2) MsgBox arr1(3)End SubSub 数组3()Dim arr1() As Integer ReDim arr1(3) ’这个是必要的,不然就出错, arr1(0) = 0 arr1(1) = 1 arr1(2) = 2 arr1(3) = 3 MsgBox arr1(0) MsgBox arr1(1) MsgBox arr1(2) MsgBox arr1(3)End SubSub 常规速度()Dim i%Dim atimeratimer = Timer Documents.Add For i = 1 To 1000 Selection.InsertAfter i Selection.InsertAfter Chr(13) NextMsgBox Timer - atimerEnd SubSub 数组速度()Dim i%, astringDim atimer atimer = Timer ’当初时间 For i = 1 To 1000 astring = astring & i & Chr(13) Next Documents.Add ’添加新文档 Selection.InsertAfter astringMsgBox Timer - atimer ’相减等于运行的时间End Sub从上面我猜:静态的定义是Dim A(n) as integer(等,不一定是ineger),动态可以是dim a()as integer,还有一种是变量即默认的值如dim a,其中注意因为a没有定义,所以他是Variant变量,当他应用于a=array("1","2","3")时,就相应于确定了一个静态数组,且赋了值。这是a就成了数组。同时,因为他是Variant变量,所以,这样赋值后,a=0,他也给设了一个值0,这个很特殊的。这时等于设a不为数组了,如之后,再用msgbox a(0)等就出错了。有点难理解,多看几遍就行了。慢慢体会,细细玩味。 SomeVariable = A(8) 数组并不仅限于一维。声明多维数组时用逗号分隔括号中每个表示数组大小的数字。在下例中,MyTable 变量是一个有 6 行和 11 列的二维数组: Dim MyTable(5, 10)在二维数组中,括号中第一个数字表示行的数目,第二个数字表示列的数目。也可以声明动态数组,即在运行脚本时大小发生变化的数组。对数组的最初声明使用 Dim 语句或 ReDim 语句。但是对于动态数组,括号中不包含任何数字。例如: Dim MyArray() ReDim AnotherArray()要使用动态数组,必须随后使用 ReDim 确定维数和每一维的大小。在下例中,ReDim 将动态数组的初始大小设置为 25,而后面的 ReDim 语句将数组的大小重新调整为 30,同时使用 Preserve 关键字在重新调整大小时保留数组的内容。 ReDim MyArray(25) ReDim Preserve MyArray(30)(这个很重要,扩大数组时使用的,缩小时,是从后向前删的。可以看一个这个文档中VBE中的数组例子。)重新调整动态数组大小的次数是没有任何限制的,但是应注意:将数组的大小调小时,将会丢失被删除元素的数据。建常数您可以使用 Const 语句在 VBScript 中创建用户自定义常数。使用 Const 语句可以创建名称具有一定含义的字符串型或数值型常数,并给它们赋原义值。例如: Const MyString = "这是一个字符串。"Const MyAge = 49请注意字符串文字包含在两个引号 (" ") 之间。这是区分字符串型常数和数值型常数的最明显的方法。日期文字和时间文字包含在两个井号 (#) 之间。例如: Const CutoffDate = #6-1-97#最好采用一个命名方案以区分常数和变量。这样可以避免在运行脚本时对常数重新赋值。例如,可以使用"vb"或"con"作常数名的前缀,或将常数名的所有字母大写。将常数和变量区分开可以在开发复杂的脚本时避免混乱。

vba 定义数组 并一次性赋值

请问,你是想自动赋值;还是手动输入值;还是值就是这些。定义一个包含数据的数组就行?

EXCEL VBA 数组赋值 下划线

其实不是很懂你为什么要换行,是数据太庞大了吗?如果是数据太庞大了,建议可以先把数据填入单元格然后用数组对单元格进行操作的话岂非更方便?如果是数据庞大而且坚持要用换行这种方式,可以先进行一维函数赋值然后一维函数转成多维函数:Sub test() Dim arr1, arr2 Dim i As Long ReDim arr1(1 To 4, 1 To 1) ’以上是为测试写的,根据实际修改。 a = "a.10." b = "100" arr1(1, 1) = a & b ’这里相当于换行 arr1(2, 1) = "b.20.200" arr1(3, 1) = "c.30.300" arr1(4, 1) = "d.40.400" ReDim arr2(1 To UBound(arr1), 1 To 3) For i = 1 To UBound(arr1) arr2(i, 1) = Split(arr1(i, 1), ".")(0) arr2(i, 2) = Split(arr1(i, 1), ".")(1) arr2(i, 3) = Split(arr1(i, 1), ".")(2) Next i MsgBox arr2(3, 2)End Sub

vba 定义多维数组ReDim Preserve cg1(0 to 3,0 to 12) As Variant

sub testfor i=0 to 2 for j=0 to 12 cg1(j)=j+1 next jnext i end sub

请问VBA怎么定义包含不同数据类型的多维数组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于请问VBA怎么定义包含不同数据类型的多维数组、请问VBA怎么定义包含不同数据类型的多维数组的信息别忘了在本站进行查找哦。