VB自定义函数:2个参数都是数组,返回值也是数组。请问如何定义及调用?
答案:2 悬赏:70
解决时间 2021-01-10 21:55
- 提问者网友:遁入空寂
- 2021-01-10 01:37
VB自定义函数:2个参数都是数组,返回值也是数组。请问如何定义及调用?
最佳答案
- 二级知识专家网友:一叶十三刺
- 2021-01-10 03:11
接收的有问题,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返回的是不是算一列,那就第一个下标表示列,第二个表行。
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返回的是不是算一列,那就第一个下标表示列,第二个表行。
全部回答
- 1楼网友:十鸦
- 2021-01-10 04:48
很久没有用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
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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |