打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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 上述实例如果再次运行一下会有什么结果呢?

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用VBA代码查询两列数据差异
给学习Excel VBA数组的人,一点点自己学习的心得
Excel 初学者对于VBA字典法的理解
VBA数组的深入讲解:创建数组的方法及数组大小的判断
《神奇的VBA》编程:批量拆分单元格数据
VBA进阶|利用VBA数组管理数据清单和表格
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服