数组与字典解决方案第二十九讲 数组的创建方法小结及回填的注意事项

《VBA数组与字典方案》教程(10144533)是我推出的第三套教程,目前已经是第二版修订了。这套教程定位于中级,字典是VBA的精华 ,我要求学员必学。7.1.3.9教程和手册掌握后,可以解决大多数工作中遇到的实际问题。

这套字典教程共两册,一共八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:数组与字典解决方案第二十九讲 数组的创建方法小结及回填的注意事项

【分享成果,随喜正能量】心静者高,高者俯瞰世界;心和者仁,仁者包容万物;心慈者深,深者淡对冷暖;心慧者安,安者笑对人生。

第二十九讲 数组的创建方法小结及回填的注意事项

大家好,我们今日继续VBA数组与字典解决方案的讲解,在最近的数组讲解中讲了很多基本的操作和概念,那么VBA数组有哪些创建的方法呢?数组和工作表又是如何对应呢?

1 使用Array函数创建数组

这种方法很简单,如:arr = Array("张一", "徐一", "陈一", "王一")

2 使用Split函数创建数组

Split的作用是把一个文本,根据指定的分隔符,建立一个数组。感觉就有点像EXCEL中的基础操作中的"分列"。不同的是"分列"操作是将一个单元格的文本按指定的分隔符分开,存放在同行的多个单元格里,而Split的作用是将一个文本(也可以是存放在单元格里的)按指定的分隔符分开,存放在一个数组变量里。

如:arr = Split("张一,徐一,陈一,王一,许一,张二,陈二,张三,徐二,张四", ",")  

  • 特别注意点:用Split把文本转换成数组,索引号总是从0开始。不管你是否使用了Option Base语句,这点和Array不同。

3 通过Range赋值创建数组

如下面的代码:创建了数组并赋值。 

Dim arr(1 To 29)

For i = 1 To 29

arr(i) = Cells(i, 1)

Next

4 直接等于某单元格区域

这个很简单,直接数组名等于单元格区域就可以了。比如想把A1:A100单元格的值给数组arr,代码还可以简单写为:arr = a1:a20

那么这里的arr是什么类型的数组呢?大家要注意,这个数组是二维数组

如下代码:

Sub MyNZsz_29() '第29讲 VBA数组的创建方法总结及数组回填到工作表的注意事项

arr = a1:a20

Sheets("29").Select

r = 2

For t = LBound(arr) To UBound(arr)

Cells(r, 3) = arr(t)

r = r + 1

Next

End Sub

代码截图:

在运行是会报错:

我们修正代码:

Sub MyNZsz_29() '第29讲 VBA数组的创建方法总结及数组回填到工作表的注意事项

arr = a1:a20

Sheets("29").Select

r = 2

For t = LBound(arr) To UBound(arr)

Cells(r, 3) = arr(t, 1)

r = r + 1

Next

End Sub

代码截图:

运行:

5 数组回填到工作表的特别注意点

1) 一维数组写入单元格区域时,这个单元格必须是水平方向的,也就是一个一行多列的单元格区域,如果想写入垂直区域,必须使用工作表的Transpose函数转换一下;

2) 和工作表的多单元格数组公式一样,数组写入单元格时,单元格的区域必须和数组的大小一致。

今日内容回向:

1 数组的常见创建方法有哪些?

2 如何理解工作赋值给数组是一个二维数组?

我多年的VBA实践经验,全部浓缩在以下教程中:

相关推荐
VBA63373 小时前
如何学习VBA之2.1.3 VBA的错误处理
vba
VBA63376 天前
VBA高级应用30例 应用6 第5部分:5 利用VBA从XML文件中导出数值数据
vba
VBA633714 天前
VBA信息获取与处理专题七第二节 网络通信过程的解读
vba
小妖6661 个月前
excel 怎么在单元格内容自动加上一段文字不能用公式
excel·vba
VBA63371 个月前
VBA之Word应用第五章第五节 Range对象的属性(四)
vba
VBA63371 个月前
VBA信息获取与处理专题七第一节 网络通信基础
vba
yivifu1 个月前
怎样将Word文档中脚注引用后面的空格轻松删除
word·vba
VBA63371 个月前
VBA之Excel应用第五章第四节 变量的生命周期
vba
VBA63372 个月前
VBA中类的解读及应用第三十五讲 类对象的生死轮回----“二师兄”的成长历程之七
vba