一、如何在vba中声明数组
1、vba中使用Dim关键字声明数组,Dim关键字的后面是数组名称,名称之后要有括号,然后括号之后可以指明数组的长度,也可用to关键字指明范围,最后则是用as关键字指明类型,具体的格式见下图:
2、下面用一个实例来说明用法,首先在表格中有6000个数值,筛选出大于90的数值将其**至B栏或C栏,分别用两种方法来写代码,一种方法不含数组,另二种方法含有数组,比较两种方法的速度:
2、在Excel工作表中,点击菜单栏开发工具,在其工具栏内,点击visual basic:
3、此时会进入VBA编辑界面,点击菜单栏插入,在其下拉菜单中选择模块:
4、此时软件会弹出模块编辑窗口,这里就可以输入vba的代码:
5、在代码编辑窗口输入带数组和不带数组的两种代码,这里可以看到用Dim关键字声明了一个6000个元素的数组:
6、在工作表界面的开发工具菜单下,点击插入按钮插入表单控件,分别与两组代码关联:
7、点击筛选数据1按钮,即不含数组,程序运行的时间了13.4219秒:
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 数组的问题进行探讨,为您提供了一些有用的见解和解决方案。如果您需要更多帮助或者有其他疑问,请不要犹豫与我们联系。