level 15
这段代码有错误,更正之后,代码如下:
Dim intSum As Integer
Sub Sum(ParamArray intNums())
Dim x As Variant
Dim y As Integer
For Each x In intNums
y = y + x
Next x
intSum = y
End Sub
Private Sub Command1_Click()
Sum 1, 3, 5, 7, 8
List1.AddItem intSum
End Sub
2022年01月30日 12点01分
2
大佬可以注释一下吗
2022年01月30日 13点01分
level 15
我还以为是因为代码错了所以你看不懂呢,合计着改成正确代码你还是看不懂啊
ParamArray表示这个参数是一个Variant类型的数组,在调用时,ParamArray的参数可以对应任意数量的实参;比如本段代码中,调用过程Sum时,就给它的参数intNums传了5个数
在过程中,ParamArray的参数就跟一个普通的数组一样
本代码用了For Each循环处理这个数组,其中,用于For Each循环的变量x必须是Variant类型,原始代码用错了类型(而且也不应该定义在通用区域);这里这个循环就是令x依次代表数组intNums中的每个元素,累加到变量y中(y应该定义成局部变量,这样VB就可以自动将y清零,可以少写一句y=0)
循环之后,将y的结果写入变量intSum(这个变量必须定义成全局变量,因为它需要跨过程使用;或者也可以不要y,那么过程Sum中在循环之前,就必须令intSum=0)
2022年01月30日 14点01分
3
level 7
好的 谢谢大佬 ,现在明白了
你怎么刚好知道我不懂paramarray
for each
如果把sum过程改成带返回的函数怎么些呢
2022年01月30日 23点01分
4
level 7
还有上面那个递归算法,为什么调试的时候myfun一直是0
2022年01月31日 03点01分
7