function函数可以完全代替sub对吗?

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:05:15
sub不能取值 但我加一个参数不就行了?两者甚至可以互换;这样的说法对不对? 谢谢!

自定义函数的话,基本可以用function完全代替sub,两者都可以返回多个值,用byref传地址就完全没有问题.看个人习惯了.
不过有个比较特殊的区别就是,如果是function acti() as integer的话,可以直接把acti带进公式里使用;如果是sub acti()的话,就需要先调用这个过程,再获取返回函数.
比如求两者和:
a.
function adt(byval a as integer,byval b as integer) as integer
adt=a+b
end function
如果想显示结果则直接代码msgbox adt(1,2)
b.
sub adt(byval a as integer,byval b as integer,byref ied as integer)
ied=a+b
end sub
这个的话你首先要定义一个变量来储存结果
dim iresult as integer
call adt(1,2,iresult)
msgbox iresult

可以说只返回1个值的时候,用function更方便(另外请注意,方法b如果将sub替换成function的话也完全成立)
如果要返回多个值的话用两种方法都差不多,但是如果要加上判断返回过程是否成功执行,建议用function返回1或0表示.其他多个返回值用byref传递,两种方法是一样的
不过如果是系统指定的你想改也改不了吧.
另外回2楼,vb也可以递归(这是必然的啊),就算用递归,function和sub同样都能做递归.不过function总体来讲更方便

没错。不用谢。

可以的,完全可以取代Sub。

但还是建议分开,方便他人阅读。

function函数 有返回值
sub没有返回值

function完全可以代替sub!
只有VB才区分sub和function
sub只是没有返回值的function罢了~~

任何 Sub 可以