Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: 爱疯

[已解决]Function可以返回2个或多个值么?

[复制链接]
 楼主| 发表于 2010-3-8 21:25 | 显示全部楼层

谢谢各位先!

根据1楼问题,枯禅、老申、青城山都提出变通方式。我个人觉得,可能青城山的示例更有助于理解。学习了!现在问题由能不能,变成为什么为什么为什么了:

就像中国原来提倡1对夫妻只生1个孩子,尽管通过变通,可以达到生多个的事实,但明白“计划生育”这条原则后,就能一下理解为什么只生1个了。

我现在就是不明白,是不是背后有啥原则?希望能知道,才死心[em04]

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2010-3-8 23:04 | 显示全部楼层

还有另外变通的方法,假定只需要返回二个数值,请看下面例子:

function XX(byref a as string) as string

a="这个是变通的返回值"

XX="这个是函数返回值"

end function

sub ls()

dim l as string,s as string

l=XX(s)

msgbox ("l=" & l)

msgbox ("s" & s)

end sub

回复

使用道具 举报

发表于 2010-3-8 23:35 | 显示全部楼层

函数是以函数名来传到返回数据的,所以只能有一个返回值。不过有个方法,就如同我们知道一个16位字节可以传递多达16个开关信息一样。只要巧妙地组织,一个返回值同样可以传递非常丰富的信息。
回复

使用道具 举报

 楼主| 发表于 2010-3-9 13:02 | 显示全部楼层

谢谢老申、酔风!

 

[em27][em27]
回复

使用道具 举报

发表于 2010-3-9 13:15 | 显示全部楼层

一般函数定义为布尔类型,返回值就通过引用方式的参数传回。

Ps. 好多API函数,或见过的别人的代码是这样。

回复

使用道具 举报

发表于 2010-3-9 13:23 | 显示全部楼层

学习 真是利害[em02]
回复

使用道具 举报

发表于 2010-3-9 13:28 | 显示全部楼层

QUOTE:
以下是引用GeV20在2010-3-9 13:15:00的发言:

一般函数定义为布尔类型,返回值就通过引用方式的参数传回。

Ps. 好多API函数,或见过的别人的代码是这样。

很多都这样,先运行函数,如果返回真值,便操作相应的返回数据。这里的返回数据是指传址方式的参数。实际上VBA里默认是传址的

回复

使用道具 举报

 楼主| 发表于 2010-3-9 13:47 | 显示全部楼层

不明白GeV20和吕布的意思 。。。 也是说,按值传递(byval)属于变通的方式之一,是这意思么 ?[em04]

回复

使用道具 举报

发表于 2010-3-9 14:31 | 显示全部楼层

不太明白爱疯问这个问题的真正用途,要返回多个数值不难啊。


Type MyType
    AA As Integer
    BB As Integer
End Type
'************************
'********返回自定义类型**
'************************
Function Test1(MyAA) As MyType
    Dim CC As MyType
    CC.AA = MyAA
    CC.BB = MyAA * 2
    Test1 = CC
End Function
Sub Main1()
    Dim DD As MyType
    DD = Test1(1)
    '函数返回了两个值
    MsgBox DD.AA
    MsgBox DD.BB
End Sub
'************************
'********返回数组********
'************************
Function Test2(MyAA)
    Test2 = Array(MyAA, MyAA * 2)
End Function
Sub Main2()
    Dim DD
    DD = Test2(1)
    '函数返回了一个数组
    MsgBox DD(0)
    MsgBox DD(1)
End Sub
回复

使用道具 举报

 楼主| 发表于 2010-3-9 16:01 | 显示全部楼层

谢谢阿木!

因为在看到function总是返回"一个值"时,想到很多时候是需要获得多个返回值的(比如1元N次方程,虽然只有1个自变量x,但它有N个y的函数值。),怎么办 ... 刚开始没细想,不会做,后来大家指点,才知道是可以的。

明白后,如11楼比喻,既然实际能够返回多个值,为啥系统依旧死不认账,只承认返回"一个值"。。。。难道背后,还有什么什么原因??(我琢磨来着),这就是我疑惑的地方[em04]

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 16:43 , Processed in 0.428578 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表