VB自定义函数:2个参数都是数组,返回值也是数组。请问如何定义及调用?

红字为说明,过程我也会写,可运行时总是指向函数调用那一行,说是类型不匹配……函数如下:(FF是另一个函数,返回计数值。)调用如下:请高人帮忙看看错在哪里?或者能否直接定义... 红字为说明,过程我也会写,可运行时总是指向函数调用那一行,说是类型不匹配……
函数如下:(FF是另一个函数,返回计数值。)

调用如下:

请高人帮忙看看错在哪里?或者能否直接定义一个二维数组?因为像s1、s2这样的数据有十几组
展开
 我来答
szqaly
2014-09-13 · TA获得超过1745个赞
知道大有可为答主
回答量:2107
采纳率:77%
帮助的人:1543万
展开全部
接收的有问题,PD返回的是字符串数组,而用aa(i)接收肯定不对,aa的一个元素是字符串类型。
aa这样定义:dim aa(Q) as Variant
这样数组中的元素也是数组,即嵌套数组了。
访问的时候这样: msgbox aa(1)(2)
追问
aa(1)(2)能解释一下吗?(1)代表什么?(2)代表什么?
我是想把这些数据全部用变量算出来,之后赋值到EXCEL表格中去,s1代表第一列,s2代表第二列 。循环的 i 代表行。那aa(1)(2)这样的话我该怎么赋值到表啊?不会访问了……
追答
这是例子,是数组下标了,就像下面例子只能这样访问了。
dim b(4) as string
b(4)="北京"
dim a(4)
a(1)=b
msgbox a(1)(4)
PD返回的是不是算一列,那就第一个下标表示列,第二个表行。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
andless2816
2014-09-13
知道答主
回答量:15
采纳率:0%
帮助的人:8.3万
展开全部
很久没有用vb了,但是印象中变量定义中不能用变量,就是说 Dim aa(Q) 可能有问题,要是我就会这么写:
Dim aa() as string
Q=5
Redim aa(Q)
不过就算你这么改了估计还是会有问题,因为aa(i)是一个特定的数组元素,而pd返回的是整个数组。
另外,我也不确定自定义函数是不是能输出数组,如果是我就会把function改成sub,然后将储存输出结果的数组用传址(byref)传到过程中,在过程中修改数组的值
追问
可是sub没有返回值,function才有返回值。而我要的就是这个返回值啊。像你那样做的话我岂不是要定义几十个数组了?因为我有几十个同类数据……而function的话就不用那么定义了,只需要调用时更换参数就好了……不知道我想的对不对?
追答
所以要你传址啊,传址以后在被调用过程中的修改也会影响到调用它的过程
把function那一行改成
sub pd2(x() as integer,y() as integer,wz as integer,ByRef pd() as string)
然后把里面的 x,y 改成x(i),y(i)

把父过程中的 aa(i)=pd(...)删掉
在next 后写
call pd2(n1arr(),n2arr(),0,aa())
然后再写如何用aa()的代码
for i=0 to q
debug.print aa(i)
next
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式