大家好,今天来介绍vba数组的经典用法(如何在vba中声明数组数据)的问题,以下是渲大师小编对此问题的归纳和整理,感兴趣的来一起看看吧!
vba数组怎么赋值
工具/材料:Microsoft Office Excel2016版,Excel表格。
1、首先选中Excel表格中要数组赋值的单元格内容。
2、然后在该界面中,点击“插入”里“表单控件”里“按钮”选项。
3、再者在该界面中,在表格中生成按钮控件,修改控件名称。
4、其次在该界面中拍扒,点击“查看代码”滚吵选项。
5、继续在VBA界面中,输入定义一维数组的语句。
6、然后在VBA界面中,输入给单元格赋值一维数组的语句。
7、最后在该界面大贺侍中,单元格里成功显示数组赋值结果。
如何在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, ],[, Compare])与InStrRev: 查找子串
Len:字符串长度
Join:连接一维数组中的所有子字符串
Left,Right,Mid: 截取子字符串
Space(数值) :生成空格字符串
Ucase,Lcase:大小写转换函数
Ltrim, Rtrim,Trim :删除首尾空格
Replace
Split:分割一个字符串成为一维数组
StrComp:字符串比较
StrConv:字符串转换
String(number, character):制搜搜定字符重复若干次
来源:-VBA (Visual Basic宏语言)
VBA操作数组
123456789Option Base 1Sub 数组片段()Dim i%, arr, arr1(2, 1) '谈旁稿先定义一个和绿色区域相同大小的数组arr1,2行1列arr = Range("G2:K6").Value '把黄色区域的数据读入数启陆组arr,5行5列For i = 1 To 2 '用<a
href="http://www.baidu.com/s?wd=FOR%E5%BE%AA%E7%8E%AF&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YduHnkuH6dnHRknWbkuhDv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHbdrHbLrjnkn1mLnj64nHfvn0"
target="_blank"
class="baidu-highlight">FOR循环为新数组arr1赋值 arr1(i, 1) = arr(i + 2, 3)Next iRange("A1").Resize(2) = arr1 '将单元格区域A1改变大小为含孝2行1列后输入新数组arr1的值End Sub
vba数组的使用
你的主要问题是
-
dim a(10)相当于定义了一个长度侍凯为10的数组. 因为你用Option Base 1声明了下标从1开始, 所以dim a(10) 相当于是 dim a(1 to 10);
-
dim i as Integer, 而i没有赋给初始老雀唤值时, 默认赋值为0. 所以for i = i to 10第一个就开始从0循环, 就是a(0)了, 导致数组下标越界.
你是笔误了吧, 将for i = i to 10修改为岁陆for i = 1 to 10
本文地址:https://gpu.xuandashi.com/71119.html,转载请说明来源于:渲大师
声明:本站部分内容来自网络,如无特殊说明或标注,均为本站原创发布。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。分享目的仅供大家学习与参考,不代表本站立场!