永发信息网

vb通用过程的问题

答案:4  悬赏:60  手机版
解决时间 2021-02-28 18:17
(Module1)
Public Sub multi(ParamArray numbers())
n = 1
For Each x In numbers
n = n * x
Next x
Print n
End Sub

(Form1)
Private Sub Form_Click()
multi 2, 3, 4, 5, 6
End Sub
为什么“没有适当的对象,方法无效”

(Form1)
Public Sub multi(ParamArray numbers())
n = 1
For Each x In numbers
n = n * x
Next x
Print n
End Sub
Private Sub Form_Click()
multi 2, 3, 4, 5, 6
End Sub
可以正常运行?
最佳答案
“没有适当的对象,方法无效”,是因为print语句不能在模块中使用,修改如下:

(Module1)

Public Function multi(ParamArray numbers())
n = 1
For Each x In numbers
n = n * x
Next x
multi = n
End Function

(Form1)

Private Sub Form_Click()
Print multi(2, 3, 4, 5, 6)
End Sub

Print语句用于在当前窗体输出字符串,只能在窗体代码中使用,而模块是没有窗体的,所以会出错
全部回答
恩 看来你没有区分好过程和函数的不同之处 过程不是function,在vb中叫sub。一个过程不需要返回值,它只是一个分支模块,当然如果你需要返回值,或者需要返回不止一个值,用过程也可以做到,不过得调用全局变量或者byref。 而函数的不同之处在于,函数本身有一个返回值。也就是说,函数名本身可以参加表达式运算。比如说,取决对值函数abs,可以参与表达式运算就是: 可以 a=2+abs(-3) 那么abs(-3)的值是怎么定义的呢?就要用到这样 sub abs(i as integer) dim temp as integer if i<0 then temp=0-i else temp=i abs=temp ;这里返回了函数本身的值 end sub
Print n这句你所指的对象不明 改为form1.print n
这是因为Print命令是要指定对象才能使用的,比如: Me.Print '当然,Me是可以省略的,但是在模块中就必须指定窗口了,如Form1.Print Picture1.Print 所以你要么这样: Form1.Print n 要么就在过程里面不用Print,而把过程改为自定义函数: (Module1) Public Function multi(ParamArray numbers()) n = 1 For Each x In numbers n = n * x Next x multi = n End Function (Form1) Private Sub Form_Click() Print multi(2, 3, 4, 5, 6) End Sub
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
第一次打微信上跟陌生打招呼:怎么打:怎么问
2000年11月7日是农历几月几日
1,有几种类型的内存变量?如何定义及使用呢?2,
武林外传兑换战场武器任务点错了怎么办
邻居找了三个人把我家的墙推到了,能被拘留吗
国有绥中县三山林场怎么去啊,有知道地址的么
"你真厉害"英文怎么翻啊
第一次带女朋友回家该怎么说??
2017广州国际灯光节,广州塔灯光秀表演每天都
忘仙,恶魔城堡白图怎么过?谁能交一下。最好
一个男人说我经济条件比他好有压力是什么意思
迫击炮的迫怎么读音
三春柳狗肉我想知道这个在什么地方
男生会介意跟女生睡在一起吗?
宁波开发区发达钢模站在哪里啊,我有事要去这
推荐资讯
头顶头发吹不干怎么办
视同销售与不视同销售会计分录有区别吗
There are a lot of computer games
异国形象论文应从什么方面进行探究
金色摇篮双语幼儿园地址在哪,我要去那里办事
衡阳祁东媒气多少钱灌。怎么投诉这些人。要11
北京富力广场购物中心东2门地址在哪,我要去
天河村社区计划生育协会地址在哪,我要去那里
中国一年用多少食品级碳酸氢铵
下表是对甲、乙、丙图所示的生命现象及a、b、
原味烤串怎么去啊,有知道地址的么
电气安装与维修的触摸屏指示灯这么调
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?