Sub cc() Dim x, y
x = Array(1, 2, 3) y = Array(4, 5, 6) MsgBox x + y End Sub
在msgbox这句设置中断,发现之前并无问题。
问题出在msgbox这句上。如题?
谢谢!
vba中也可以用数组公式。
例如
Sub aa() x = [a1:a10*b1:b10] MsgBox x(10, 1)End Sub
再比如10不确定
Sub bb() x = 10 y = Application.Evaluate("a1:a" & x & " *b1:b" & x) MsgBox y(10, 1)End Sub
使用道具 举报
Sub cc() Dim x x = Array(1, 2, 3) MsgBox xEnd Sub
这样就错了,因为msgbox后面只能是数组中的一个元素,而不能是整个数组。
应该这样
Sub cc() Dim x x = Array(1, 2, 3) MsgBox x(1)End Sub
其次数组求和要用循环语句,或者利用sum
MsgBox Application.WorksheetFunction.Sum(x, y)
MSGBOX 不能返回数组的结果,更别说数组相加了
Sub dd() Dim x, y, z()
x = Array(1, 2, 3) y = Array(4, 5, 6) z = x + y End Sub
为什么这样也不行[em09]
VBA中数组是不能这样+的,方法我在2楼回复时已经说了。
如果你希望z的结果是{5,7,9},需要用循环语句加。
x = Array(1, 2, 3) y = Array(4, 5, 6) ReDim z(3) For i = 0 To 2 z(i) = x(i) + y(i) Next MsgBox z(0)End Sub
所以这些惹出的麻烦,都是因为我想学习函数数组造成的 ...
函数数组与VBA数组,两者有多大区别啊
可以这样加:msgbox join([{1,2,3}+{4,5,6}], ",")
2,3楼,解释1楼错误为msgbox语法。我觉得只对了1部分,主要的另1部分没解释。
为此改为4楼。6,8,9楼是对特定要求的解法(后面再请教)。但仍没解释了主要的原因。对于4楼的错误为什么提示类型不匹配,是不是系统也解释不了,所以用“类型不匹配”随便敷衍了事?
本帖中,中括号的作用是什么?=Evaluate的作用吗
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )
GMT+8, 2024-6-8 06:58 , Processed in 0.132201 second(s), 7 queries , Gzip On, Yac On.
Powered by Discuz! X3.4
Copyright © 2001-2020, Tencent Cloud.