博文

目前显示的是 十一月, 2021的博文

VBA学习笔记2:数组的使用

对于办公人员来说,使用数据最大的好处是,需要写入或计算的数据会在内存里组织好后一次性贴入单元格内,而不是逐个贴入。这样可以大大提升VBA代码的运行速度,特别是针对数据量大的表格,避免了屏幕反复刷新的情况。本文梳理几个常与数组配合使用的知识点。 1.数组的参数 数组的参数指明对数组的引用,类似对单元格区域的引用,如果是二维数组,同样遵循“先行后列”原则。如: range("A1:B6")(3,2)     '引用区域 "A1:B6"中第3行第2列的值 arr(3,2)     '引用二维数组 第3行第2列的值 但是,Range("A1:B6")(3) 是引用区域"A1:B6"中的第3个单元格的值(先行后列),而对二维数组arr使用“arr(3)”语句的话,就会“下标越界”,因为二维数组必须使用两个参数。 2.数组的产生 数组产生的方式有多种,每种方式产生的结果有细微差异。 ①最简单的方式,和工作表中的数组公式类似,即使用{}括住数组的内容,横向数组采用“,”分隔,纵向数组采用“;”分隔。VBA中的数组还要在大括号外面加上一对“[]”。 Sub 数组产生() Dim arr(), arr1() arr = [{"语文";"数学";"英语";"体育"}]     '产生纵向二维数组 arr1 = [{"语文","数学","英语","体育"}]      '产生横向一维数组 Debug.Print arr(2, 1)     ‘结果:数学 Debug.Print arr1(2)      ‘结果:数学 End Sub 上例,arr是纵向数组,因为VBA中只有横向一维数组,没有纵向一维数组,所以arr是二维数组,引用时必须用两个参数。而arr1则是一维数组。 ②以上手工录入数组元素的方式,中括号可以用evaluate函数代替。但是evaluate函数的参数是文本类型,所以要在大括号外加上双引号。为了避免产生歧义,大括号内的双引号要变成”双双引号“。如:arr = evaluate("{...