vba数组赋值,VBA 循环给一个数组赋值的问题
vba数组赋值,VBA 循环给一个数组赋值的问题详细介绍
本文目录一览: excel vba中如何定义数组,并赋值
for each i in array(1, 6, 8, 18, 19, 20, 25, 62, 63, 64) msgbox "i=" & inext i
aaa=array(1,6,8,18,19,20,25,62,63,64)
for i=0 to ubound(aaa)
msgbox(aaa(i))
next
Dim i as integer, aaa(9) as integer
aaa=array{1, 6, 8, 18, 19, 20, 25, 62, 63, 64}
Sub a()
Dim aaa(9)
aaa(0) = 1
aaa(1) = 6
aaa(2) = 8
aaa(3) = 18
aaa(4) = 19
aaa(5) = 20
aaa(6) = 25
aaa(7) = 62
aaa(8) = 63
aaa(9) = 64
For f = 0 To 9
i = aaa(f)
Debug.Print i
Next f
End Sub
Private Sub defineArr()
Dim iArray As Variant, VarArray As Variant, AAA(1 To 3) As Double
VarArray = Array(1#, 6#, 8#)
Dim i As Integer
i = 1
For Each iArray In VarArray
AAA(i) = iArray
i = i + 1
Next iArray
End Sub
大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解:什么是数组,如何定义数组,如何创建数组
一、什么是数组 就是数组共享一个名字,有着多个元素按顺序排列的变量。在数组中,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。
二、如何定义数组 声名数组同声明其他变量的方式一样,唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。
如下面的代码:
Sub Mynzsmart()
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 MyNZsmarttwo()
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数组怎么赋值
数组可以单个赋值,例如:
dim a(3)a(1)=1a(2)=2a(3)=3也可以使用Array一次性赋值,例如:
dim aa=Array(1,2,3)还可以从表格进行复制,例如:
dim aa = Range("A1:D4")
字符串数组的定义:
Dim arr(1 to 3) as string
如此定义,但是不能直接给数组赋值
如果想直接给数组直接赋值,需要如下操作:
Dim arr() as Variant
arr=Array("a","b","c")
1、打开一个Excel的文件,在表格中输入简单的表格,比如学生身高表格,如下图所示。
2、接着,在表格中输入一维数组的说明文字,鼠标左键单击【开发工具】菜单标签,在VBA控件下拉菜单中,并选择按钮控件,如下图所示。
3、然后,在表格中绘制出按钮控件,并修改控件名称,比如使用一维数组的名称,如下图所示。
4、接着,选择按钮控件,并鼠标左键单击【查看代码】按钮,如下图所示。
5、然后,在代码窗口中输入VBA语句,比如输入定义一维数组的语句,并给一维数组赋值,如下图所示。
6、接着,在代码窗口中,输入一维数组给单元格赋值的VBA语句,如下图所示。
7、最后,在设计窗口上,鼠标左键单击按钮,可以看到表格中的,通过VBA程序的一维数组,并输出到身高的单元格中,显示出数据了,如下图所示。完成效果图。
VBA数组的定义与赋值
参考下面的代码,和你的问题有些像:
Sub Test()
? ? Dim Arr(1 To 9) As Integer '定义一个下标为1,上标为9的整型数组
? ? Dim Brr(9) As String ''定义一个下标为0,上标为9的整型数组。这里的默认下标可以在模块中用 option base来声明数组下标的缺省下界,默认是0
? ? Dim Crr(9, 1 To 9) As String '定义了一个二维字符型数组,第一维下标为0,上标为9,第二维下标为1,上标为9
? ? Dim Drr As Variant '定义了一个变体类型
? ? Dim Frr() As Long ''定义一个数组,但维度和上下标未明确
? ?
? ? Arr(9) = 9 '元素赋值
? ? Brr(0) = "0" '元素赋值
? ? Crr(1, 1) = "A"
? ?
? ? Drr = Crr 'drr(1,1)="A"
? ?
? ? ReDim Frr(10) As Long??'重新定义了Frr数组的维度和上下标
? ? ReDim Frr(1 To 10, 1 To 10) '再次重新定义Frr数组的维度和上下标
? ?
? ? Frr(1, 10) = 110 '元素赋值
? ?
? ? ReDim Preserve Frr(1 To 10, 1 To 11) '重新定义数组最后一维的大小,并保持原有数据,此时 Frr(1,10)还是 110
? ?
End Sub
VBA显然是不支持数组控件的,但可以这样的,假如金额的textbox名称依次被命名为sum1,sum2,sum3........
private sub cmdOk_click()
dim a as control
for each a in me.controls
if left(a.name,3)="sum" and a.value ="" then a.value=0
next
end sub
字符串数组的定义:
Dim arr(1 to 3) as string
如此定义,但是不能直接给数组赋值
如果想直接给数组直接赋值,需要如下操作:
Dim arr() as Variant
arr=Array("a","b","c")
你可以定义其他数据类型 ,或者其他类型 ,一下是类型表,建议您看一下
Sub 数组()
Dim ArrA as Variant
ArrA=Array("a","b","c","d") 这样才可以
End Sub
Sub 数组1()
Dim ArrA() as String
redim ArrA(10)
for i = 0 to 9
ArrA(i) = chr(65+i)
next i
End Sub
可直接定义,但是不能直接赋值,可参考以下代码:
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中如何用一个数组给另一个数组赋值?
通过数组循环的方式进行数组赋值。
示例:
Dim names '定义一个初始化数组 Dim dest(3) '定义一个要赋值的数组 '赋值 names = Array("小明", "小红", "效力", "张明", "王武", "", "", "", "", "", "") '通过Ubound()函数计算上界,LBound计算数组下界 For i=LBound(dest) to UBound(dest) dest(i) = names(i);//数组赋值 next i
应该循环数组并比较后赋值,或按位赋值
dim B() as double
redim B(4)
B(1) = A(0)
B(2) = A(1)
B(3) = A(3)
B(4) = A(5)
dim i%
dim A(0 Tto 8),B(0 to 3)
a=array(1,2,3,4,5,6,7,8,9)
B(0)=A(0)
B(1)=A(1)
B(2)=A(3)
B(3)=A(5)
1.首先在Excel电子表格中选择要分配数组的单元格。
2.n、在界面中,点击“insert”和“formcontrol”中的“button”选项。
3.在接口版本的表中生成按钮控件,修改控制的名字。
4.接下来,在界面中,点击“查看代码”选项。
5.在VBA接口中继续,并输入定义一维数组的语句。
6.然后,在VBA接口中,输入一条为单元格分配权重数组的语句。
7.最后,在这个接口中,单元格成功地显示了数组分配结果。
VBA二维数组怎么赋值?
可通过 “ = ” 符号或 “ Set ” 关键字进行赋值。
变量在使用时还需要对其进行赋值。在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。
变量名=数据
变量1=变量2 运算符 数据
变量1=变量2 运算符 变量3 … 运算符 变量n
如果在定义变量时指定了变量的数据类型,则为变量所赋的值也必须是该数据类型的值。如果变量定义为Integer类型,而在赋值时却给了变量一个String类型的数据,则在编译运行的过程中将弹出错误弹框。
扩展资料VBA二维数组包括静态和动态数组。
静态数组是具有确定大小的数组,当事先知道数组的大小时使用静态数组。静态数组的大小是在数组的声明语句里确定的,例如,语句DimFruits(10)AsString声明了一个由10个成员组成的叫做Fruits的静态数组。
但是,万一不肯定数组会包含多少个成员,如果过程由用户输入决定,每次程序执行时,用户提供的成员数可能会变化的。
VBA会留出足够的内存来储存数组,如果声明一个需要的更多成员的数组的话,将浪费计算机资源。
这个问题的解决方法是让数组变为动态的。动态数组是大小可以改变的数组。如果数组的大小每次都由程序运行而决定的话,就使用动态数组。
参考资料来源:百度百科--VBA
VBA中关于数组及赋值的问题
VBA数组赋值方式:
字符串数组的定义:
Dim arr(1 to 3) as string
如此定义,但是不能直接给数组赋值
如果想直接给数组直接赋值,需要如下操作:
Dim arr() as Variant
arr=Array("a","b","c")
赋值格式:
例如,给变量a赋值一个数为12,则格式为:a = 12 [注意:变量(即a)只能是一字母,而赋予的值可以是一个式子,当它是式子时,a的值就是这个式子的结果。
VBA 循环给一个数组赋值的问题
vba数组赋值方式:
1.
字符串数组的定义:
dim
arr(1
to
3)
as
string
如此定义,但是不能直接给数组赋值
2.
如果想直接给数组直接赋值,需要如下操作:
dim
arr()
as
variant
arr=array("a","b","c")
3.
赋值格式:
例如,给变量a赋值一个数为12,则格式为:a
=
12
[注意:变量(即a)只能是一字母,而赋予的值可以是一个式子,当它是式子时,a的值就是这个式子的结果。
有两个办法:
1、将比较语句做一个循环:For
j
=
0
To
UBound(arr)
2、如果不会变换使用上述方法,增加一个数组过渡,现在的arr为固定数组:dim
arr(4),假定过渡数组为:arr1
=
Split(Range("a"
&
i),
"-"),将arr1循环赋值给arr,就用你现有代码即可。
但最想说的是,你的代码太繁杂,你应该把判断条件说出来,感觉你的代码可大大简化。
vba怎么给二维数组赋值array
可以用Resize来实现,示例如下:
arr=range("A1:Z1")'将第一行,A到Z列,赋值给数组arr
range("A2").resize(ubound(arr),1)=application.transpose(arr)'将数组Arr转置后,赋予A2开始的A列中。
关于Resize属性:
调整指定区域的大小。返回
Range对象,该对象代表调整后的区域。
expression.Resize(RowSize,
ColumnSize)
expression
必需。该表达式返回要调整大小的
Range对象。
RowSize
Variant
类型,可选。新区域中的行数。如果省略该参数,则该区域中的行数保持不变。
ColumnSize
Variant类型,可选。新区域中的列数。如果省略该参数。则该区域中的列数保持不变。
Excel VBA里数组有没有办法整体赋值的
1、可以使用单元格数组,这样就可以实现整体赋值,比如arr=range("A1:C3") 就是把单元格区域A1:C3的值一次性赋给arr,此时的arr就是一个三行三列的二维数组
2、也可以使用直接定义的方式来定义整体数组,比如arr=array(0,1,2,3) ,arr=array(array(1,2,3),array(4,5,6)) 或者 arr = [{1,2;3,4}] 等等
有啊
例如将区域A1:B10的区域赋予数组
可以直接
ar=range("A1:B10")