VBA数组的定义与赋值

菜鸟一枚,请问为何将数组变量ArrA声明为String, 运行时显示“运行错误 类型不匹配”,而将其声明为Variant却能正常运行?
Sub 数组练习()

Dim ArrA() As String

ReDim ArrA(3)

ArrA = [{"A","B","C","D"}]

End Sub
还有,将数组变量ArrA声明为String,用Array函数给ArrA赋值,运行也出现"类型不匹配",将其声明成Variant时,运行就正常。为什么啊?Array函数返回值是Variant啊,为何不能将ArrA声明成String啊?
Sub 数组()
Dim ArrA() as string
ArrA=Array("a","b","c","d")
End Sub
最新回答
_旋转

2020-08-08 10:05:49

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

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宏语言)

雪鬓

2021-08-16 07:40:08

参考下面的代码,和你的问题有些像:

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
半顆糖甜入心

2020-09-06 19:09:14

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
〆剩余的表白

2023-01-03 04:49:28

字符串数组的定义:
Dim arr(1 to 3) as string
如此定义,但是不能直接给数组赋值
如果想直接给数组直接赋值,需要如下操作:
Dim arr() as Variant
arr=Array("a","b","c")
嗝是迷路的屁

2021-06-14 09:29:07

你可以定义其他数据类型  ,或者其他类型 ,一下是类型表,建议您看一下