×

【VBA】数组介绍_vba 数组

前端技术网 前端技术网 发表于2024-01-21 19:22:35 浏览3804 评论0

抢沙发发表评论

一、如何在vba中声明数组

1、vba中使用Dim关键字声明数组,Dim关键字的后面是数组名称,名称之后要有括号,然后括号之后可以指明数组的长度,也可用to关键字指明范围,最后则是用as关键字指明类型,具体的格式见下图:

2、下面用一个实例来说明用法,首先在表格中有6000个数值,筛选出大于90的数值将其**至B栏或C栏,分别用两种方法来写代码,一种方法不含数组,另二种方法含有数组,比较两种方法的速度:

【VBA】数组介绍_vba 数组

2、在Excel工作表中,点击菜单栏开发工具,在其工具栏内,点击visual basic:

3、此时会进入VBA编辑界面,点击菜单栏插入,在其下拉菜单中选择模块:

4、此时软件会弹出模块编辑窗口,这里就可以输入vba的代码:

5、在代码编辑窗口输入带数组和不带数组的两种代码,这里可以看到用Dim关键字声明了一个6000个元素的数组:

6、在工作表界面的开发工具菜单下,点击插入按钮插入表单控件,分别与两组代码关联:

7、点击筛选数据1按钮,即不含数组,程序运行的时间了13.4219秒:

【VBA】数组介绍_vba 数组

8、点击筛选数据2按钮,即含数组的一组,程序运行的时间为0.0313秒,可以看到这种方法快多了吧:

二、VBA数组的定义与赋值

可直接定义,但是不能直接赋值,可参考以下代码:

1、Dim arr(1 to 3) as string

如此定义,但是不能直接给数组赋值

如果想直接给数组直接赋值,需要如下操作:

Dim arr() as Variant

arr=Array("a","b","c")

2、Dim A As Variant

A= Array(10,20,30)

B= A(2)

array函数返回的是变体型,要用该函数是不能给数组变量赋值

扩展资料:

VBA的常用内置函数:

MsgBox

InputBox

舍入函数:Fix向0取整,Int向下取整, Round四舍五入

Rnd:返回0-1内的单精度随机数

字符串函数:

Filter:对字符串的一维数组的过滤

InStr([Start, ]<Str1>,<Str2>[, Compare])与InStrRev:查找子串

Len:字符串长度

Join:连接一维数组中的所有子字符串

Left,Right,Mid:截取子字符串

Space(数值):生成空格字符串

Ucase,Lcase:大小写转换函数

Ltrim, Rtrim,Trim:删除首尾空格

Replace

Split:分割一个字符串成为一维数组

StrComp:字符串比较

StrConv:字符串转换

String(number, character):制定字符重复若干次

参考资料来源:百度百科-VBA(Visual Basic宏语言)

三、excel vba中如何定义数组,并赋值

大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解:什么是数组,如何定义数组,如何创建数组

一、什么是数组就是数组共享一个名字,有着多个元素按顺序排列的变量。在数组中,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。

二、如何定义数组声名数组同声明其他变量的方式一样,唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。

如下面的代码:

Sub Mynz**art()

Dim i As Integer, j As Integer

Dim arr(1 To 10, 1 To 2) As Integer'定义一个10*2的二维数组(10行,2列)

j= 1'数组1 to 10的索引号

For i= 1 To 20 Step 2

arr(j, 1)= i'赋值

arr(j, 2)= i+ 1'赋值

j= j+ 1'索引号增加

Next

[a1:b65536].Clear'清除原有数据

[a1].Resize(10, 2)= arr'将数组赋值给A1单元格向下10行,向右2列的区域

End Sub

代码截图:

运行后:

三、动态数组

在上面的讲解中我们知道,声明一个数组,必须指定数组的大小,即它是几维数组,有多少个元素。但有些时候,我们在定义数组的时候,并不能确定数组的大小,这时,我们在首次定义数组的时候括号内为空(当然先指定一个大小也是可以的,但纯属是多余),在程序过程中用Redim语句去重新指定数组的大小,这就是动态数组。

比如一个工作表的C列存储了学生姓名,现在我们需要把把有姓“王”的学生存储在数组arr中,预先我们并不知道C列姓王的学生有三十个还是五十个,所以,我们在定义时代码可以这样:

代码:

Sub MyNZ**arttwo()

Dim i%, xrow%, j%, xcount%

Dim arr() As String

erow= [c65536].End(3).Row'最后一个非空单元格行号

j= 1'数组索引号

xcount= Application.WorksheetFunction.CountIf([c1:c65536],"王*")'统计有多少姓王的学生

ReDim arr(1 To xcount)'重新定义数组大小,元素共有xcount个

四、如何计算vba动态数组的长度

例如某zd数组名称是a

计算它的长度就是 Ubound(a)+ 1,Ubound()函数是用来获取数组中最大上限。

例如某数组有5个元回素,那么,通过个取得的最大上限就是4,因为vb中的数组是从0开始的,所以在取得这个最大上限之答后还需要加上一个1。

扩展资料:

UBound函数:返回一个 Long型数据,其值为指定的数组维可用的最大下标。

语法为UBound(arrayname[, dimension])

Ubound函数返回值

返回一个 Long型数据,其值为指定的数组维可用的最大下标。

假如 arrayname为空,ubound方法将返回 undefined。

部分参数

arrayname

必需的,表示数组变量的名称,遵循标准变量命名约定。

参考资料来源:百度百科-Ubound

感谢您花时间阅读本文!我们希望通过对【VBA】数组介绍_vba 数组的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。