(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
可以正常运行?
vb通用过程的问题
答案:4 悬赏:60 手机版
解决时间 2021-02-28 18:17
- 提问者网友:沉默菋噵
- 2021-02-28 06:24
最佳答案
- 五星知识达人网友:慢性怪人
- 2021-02-28 07:39
“没有适当的对象,方法无效”,是因为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语句用于在当前窗体输出字符串,只能在窗体代码中使用,而模块是没有窗体的,所以会出错
(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语句用于在当前窗体输出字符串,只能在窗体代码中使用,而模块是没有窗体的,所以会出错
全部回答
- 1楼网友:我住北渡口
- 2021-02-28 10:01
恩 看来你没有区分好过程和函数的不同之处
过程不是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
- 2楼网友:像个废品
- 2021-02-28 09:28
Print n这句你所指的对象不明
改为form1.print n
- 3楼网友:舍身薄凉客
- 2021-02-28 08:10
这是因为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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯