在学习“使用不定数量的参数”时遇到的问题

lllzc 2005-10-15 05:01:44
在学习VB6时看到书上这样一段文字:
“使用不定数量的参数
一般说来,过程调用中的参数个数应等于过程说明的参数个数。可用 ParamArray 关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的 Sum 函数:

Dim x As Integer
Dim y As Integer
Dim intSum As Integer

Sub Sum (ParamArray intNums ())
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 ”

可在调试这个程序时,在“Sub Sum (ParamArray intNums ()) ”处报错“for each 数组的控件变量必须为变体”。

请问,程序存在什么问题?谢谢!
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lllzc 2005-10-16
  • 打赏
  • 举报
回复
这个地方一个是想看看怎么用 ParamArray 关键字指明,还有就是想看看如何使用“For...Each”语句。

“WallesCai(最奢侈的事就是睡觉了,偶好想睡觉哦.女朋友可以不”和 “northwolves(狼行天下) ”的方法都可行,只是和我的目的不同。

“chewinggum(口香糖·把减肥列入下一个五年计划)”说的恰好符合我的目的。

谢谢 WallesCai 和 northwolves 的解答!

问题点数——chewinggum——它是你的了 ^_^ ,谢谢!
northwolves 2005-10-15
  • 打赏
  • 举报
回复
Dim x As Integer
Dim y As Integer
Dim intSum As Integer

Sub Sum(ParamArray intNums())
For x = LBound(intNums) To UBound(intNums)
y = y + intNums(x)
Next x
intSum = y
End Sub

Private Sub Command1_Click()
Sum 1, 3, 5, 7, 8
List1.AddItem intSum
End Sub
脆皮大雪糕 2005-10-15
  • 打赏
  • 举报
回复
Dim x As Variant 即可
熊孩子开学喽 2005-10-15
  • 打赏
  • 举报
回复
效率是稍微低了一些,但是也可以用,你可以先这么用这,把精力放到程序的其他地方去,等别的地方都弄好了,再会头花时间来解决它。
写一个完整的程序,必须以大局为重。整体功能大于局部功能。
熊孩子开学喽 2005-10-15
  • 打赏
  • 举报
回复
我不知道这个用法如何,但是我觉得可以用别的方法来绕过这个障碍。
比如:使用字符串参数,就象在MAIN函数中接受程序的启动参数那样。

FUNCTION MYSUM(BYVAL NUMBRER AS STRING) AS DOUBLE
DIM A() AS DOUBLE
DIM B AS LONG
A=SPLIT(NUMBER, ",",-1)
FOR B=LBOUND(A) TO UBOUND(A)
MYSUM=MYSUM + VAL(A(B)
NEXT
END FUNCTION

调用的时候: msgbox mysum("1,2,3,4,5,6,7,8,9")

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧