vba中数组用法

本文详细介绍了VBA中数组的定义,包括静态和动态数组,以及`ReDim`和`Preserve`关键字的使用。特别强调了`ReDim Preserve`在保留数据时的注意事项,指出类型不匹配的错误可能源于声明变量时未使用括号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:简单介绍

定义方式
dim  arr11 (5)
dim  arr12 (0 to 5 )
dim  arr13 (1 to 5)

dim arr21(1,5)
dim arr22(0 to 1 ,0 to 5)
dim arr22(1 to 1 ,1 to 5)

dim arr3()


静态数组
dim  arr51(5)

动态数组
dim arr61()
redim arr61(13)
redim arr61(20)
redim arr61(j)
redim arr61(1 to k)


dim arr71()
redim preserve  arr71( 1 to 10)

dim arr81()
arr81(0)=1
redim preserve  arr81( 1 to 10)


dim arr91()
arr91(1)=2
redim preserve  arr91( 1 to 10)
 

数组的定义方式的差别
Dim arr1 As Range         '定义为excel对象,arr1是对象名。range是EXCEL的对象,cells也是
                                        '并且这样的数组一定是 2维数组
Dim arr2                          '定义变量,arr2是变量名
                                        '变量最灵活,变量可以被 对象赋值,也可以被数组直接赋值  
Dim arr3()                        '定义为数组,arr3是数组名
                                        '而且这是动态数组,index默认了从0开始
                                        ' 动态数组才配合用 redim ,静态数组不需要
                                        ' 动态数组只能改变最后1个维度
dim  arr4(5)                      '这是静态数组,静态数组不需要redim

数组定义与数组个数
dim arr1(5)                                        'index是 0,1,2,3,4,5,共6个index
dim arr1(1 to 5)                                 'index是 1,2,3,4,5,共5个index
option base 2   dim arr1(5)               'index是 2,3,4,5,共4个index
 

什么时候用redim 和 preserve
数组先被定义为了 动态数组 dim arr1()
后面可以重新定义 redim arr1(k)
可以进行多次redim
如果下次redim想 保留之前 arr1里的数据,则需要写 redim preserve arr1(k) 
容易出错的地方 redim preserve arr1(1 to k)往往会报错,越界,因为之前index从0开始,无法匹配preserve

定义方式
dim  arr11 (5)
dim  arr12 (0 to 5 )
dim  arr13 (1 to 5)

dim arr21(1,5)
dim arr22(0 to 1 ,0 to 5)
dim arr22(1 to 1 ,1 to 5)

dim arr3()


静态数组
dim  arr51(5)

动态数组
dim arr61()
redim arr61(13)
redim arr61(20)
redim arr61(j)
redim arr61(1 to k)


dim arr71()
redim preserve  arr71( 1 to 10)

dim arr81()
arr81(0)=1
redim preserve  arr81( 1 to 10)


dim arr91()
arr91(1)=2
redim preserve  arr91( 1 to 10)
 

数组的定义方式的差别
Dim arr1 As Range         '定义为excel对象,arr1是对象名。range是EXCEL的对象,cells也是
                                        '并且这样的数组一定是 2维数组
Dim arr2                          '定义变量,arr2是变量名
                                        '变量最灵活,变量可以被 对象赋值,也可以被数组直接赋值  
Dim arr3()                        '定义为数组,arr3是数组名
                                        '而且这是动态数组,index默认了从0开始
                                        ' 动态数组才配合用 redim ,静态数组不需要
                                        ' 动态数组只能改变最后1个维度
dim  arr4(5)                      '这是静态数组,静态数组不需要redim
 

数组定义与数组个数
dim arr1(5)                                        'index是 0,1,2,3,4,5,共6个index
dim arr1(1 to 5)                                 'index是 1,2,3,4,5,共5个index
option base 2   dim arr1(5)               'index是 2,3,4,5,共4个index
 

什么时候用redim 和 preserve
数组先被定义为了 动态数组 dim arr1()
后面可以重新定义 redim arr1(k)
可以进行多次redim
如果下次redim想 保留之前 arr1里的数据,则需要写 redim preserve arr1(k) 
容易出错的地方 redim preserve arr1(1 to k)往往会报错,越界,因为之前index从0开始,无法匹配preserve
代码中使用了ReDim Preserve语句,出现类型不匹配? 多半是因为在声明变量时写成了arr,而非arr()

定义方式
dim  arr11 (5)
dim  arr12 (0 to 5 )
dim  arr13 (1 to 5)

dim arr21(1,5)
dim arr22(0 to 1 ,0 to 5)
dim arr22(1 to 1 ,1 to 5)

dim arr3()


静态数组
dim  arr51(5)

动态数组
dim arr61()
redim arr61(13)
redim arr61(20)
redim arr61(j)
redim arr61(1 to k)


dim arr71()
redim preserve  arr71( 1 to 10)

dim arr81()
arr81(0)=1
redim preserve  arr81( 1 to 10)


dim arr91()
arr91(1)=2
redim preserve  arr91( 1 to 10)
 

数组的定义方式的差别
Dim arr1 As Range         '定义为excel对象,arr1是对象名。range是EXCEL的对象,cells也是
                                        '并且这样的数组一定是 2维数组
Dim arr2                          '定义变量,arr2是变量名
                                        '变量最灵活,变量可以被 对象赋值,也可以被数组直接赋值  
Dim arr3()                        '定义为数组,arr3是数组名
                                        '而且这是动态数组,index默认了从0开始
                                        ' 动态数组才配合用 redim ,静态数组不需要
                                        ' 动态数组只能改变最后1个维度
dim  arr4(5)                      '这是静态数组,静态数组不需要redim
 

数组定义与数组个数
dim arr1(5)                                        'index是 0,1,2,3,4,5,共6个index
dim arr1(1 to 5)                                 'index是 1,2,3,4,5,共5个index
option base 2   dim arr1(5)               'index是 2,3,4,5,共4个index
 

什么时候用redim 和 preserve
数组先被定义为了 动态数组 dim arr1()
后面可以重新定义 redim arr1(k)
可以进行多次redim
如果下次redim想 保留之前 arr1里的数据,则需要写 redim preserve arr1(k) 
容易出错的地方 redim preserve arr1(1 to k)往往会报错,越界,因为之前index从0开始,无法匹配preserve
代码中使用了ReDim Preserve语句,出现类型不匹配? 多半是因为在声明变量时写成了arr,而非arr()

定义方式
dim  arr11 (5)
dim  arr12 (0 to 5 )
dim  arr13 (1 to 5)

dim arr21(1,5)
dim arr22(0 to 1 ,0 to 5)
dim arr22(1 to 1 ,1 to 5)

dim arr3()


静态数组
dim  arr51(5)

动态数组
dim arr61()
redim arr61(13)
redim arr61(20)
redim arr61(j)
redim arr61(1 to k)


dim arr71()
redim preserve  arr71( 1 to 10)

dim arr81()
arr81(0)=1
redim preserve  arr81( 1 to 10)


dim arr91()
arr91(1)=2
redim preserve  arr91( 1 to 10)
 

数组的定义方式的差别
Dim arr1 As Range         '定义为excel对象,arr1是对象名。range是EXCEL的对象,cells也是
                                        '并且这样的数组一定是 2维数组
Dim arr2                          '定义变量,arr2是变量名
                                        '变量最灵活,变量可以被 对象赋值,也可以被数组直接赋值  
Dim arr3()                        '定义为数组,arr3是数组名
                                        '而且这是动态数组,index默认了从0开始
                                        ' 动态数组才配合用 redim ,静态数组不需要
                                        ' 动态数组只能改变最后1个维度
dim  arr4(5)                      '这是静态数组,静态数组不需要redim
 

数组定义与数组个数
dim arr1(5)                                        'index是 0,1,2,3,4,5,共6个index
dim arr1(1 to 5)                                 'index是 1,2,3,4,5,共5个index
option base 2   dim arr1(5)               'index是 2,3,4,5,共4个index
 

什么时候用redim 和 preserve
数组先被定义为了 动态数组 dim arr1()
后面可以重新定义 redim arr1(k)
可以进行多次redim
如果下次redim想 保留之前 arr1里的数据,则需要写 redim preserve arr1(k) 
容易出错的地方 redim preserve arr1(1 to k)往往会报错,越界,因为之前index从0开始,无法匹配preserve
代码中使用了ReDim Preserve语句,出现类型不匹配? 多半是因为在声明变量时写成了arr,而非arr()


————————————————
版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemanqianshan/article/details/103391908

 

————————————————
版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemanqianshan/article/details/103391908

————————————————
版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemanqianshan/article/details/103391908

代码中使用了ReDim Preserve语句,出现类型不匹配? 多半是因为在声明变量时写成了arr,而非arr()
————————————————
版权声明:本文为CSDN博主「奔跑的犀牛先生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xuemanqianshan/article/details/103391908

二:详细介绍:

1.筛选数组

如果上面的还没看懂,可以继续看下面解释:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值