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

《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实践经验,全部浓缩在以下教程中:

相关推荐
小妖66619 天前
excel 怎么在单元格内容自动加上一段文字不能用公式
excel·vba
VBA633720 天前
VBA之Word应用第五章第五节 Range对象的属性(四)
vba
VBA633720 天前
VBA信息获取与处理专题七第一节 网络通信基础
vba
yivifu21 天前
怎样将Word文档中脚注引用后面的空格轻松删除
word·vba
VBA633722 天前
VBA之Excel应用第五章第四节 变量的生命周期
vba
VBA63371 个月前
VBA中类的解读及应用第三十五讲 类对象的生死轮回----“二师兄”的成长历程之七
vba
SunnyDays10111 个月前
使用 C# 添加、修改和删除 Excel VBA 宏 (无需 Microsoft Office Interop)
c#·excel··vba
VBA63371 个月前
VBA 64位API声明语句第021讲
vba
VBA63371 个月前
VBA数据库解决方案第三十一讲 DELETE+ADDNEW实现类似于UPDATA功能
vba