Excel精英培训网

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

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

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

QUOTE:
以下是引用爱疯在2010-3-9 20:12:00的发言:

谢谢八月院长、飞版!

学习了!

平时,用惯sub了,所以看到function,不自己就迟钝些了。这样总结对么?

在外,必须全副武装(带参),如 ReDim arr(b(5));

在内,摘盔卸甲也可(不带参),如 b = x + 1。也可带参,如 b(x) = x + 1。

PS:加粗部分,没把握 [em04]

这个要看怎么理解function。自定义函数可以返回一个数值,也可以返回一个数组。

像这样只定义一个function函数而不指定返回类型的话,根据自定义函数代码来确定返回类型,可以是一个Variant类型的值,也可以是一个Variant类型的数组。

Function b(x)
End Function

在外部调用自定义函数b时,需要确定返回的值是什么。

ReDim arr(b)的错误之处是没有给自定义函数传递值,如果你定义为x为Optional参数的话,也可以直接使用arr(b)

Sub a()
    Dim arr
    ReDim arr(b)
    Stop
   
End Sub

Function b(Optional x = 0)
    b = x + 1
End Function

在内部的话,也不可以使用b(x) = x + 1。

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

使用道具 举报

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

谢谢八月院长!

“Optional 可选的。表示参数不是必需的。如果使用了该选项,则 arglist 中的后续参数都必须是可选的,而且必须都使用 Optional 关键字声明。如果使用了 ParamArray,则任何参数都不能使用 Optional 声明。 ”

看了帮助后,还是不明白,请问Function b(Optional x = 0)是什么意思啊?


Sub a()
    Dim arr

    Call b(5)
    ReDim arr(b(5))
    Stop
    
End Sub

Function b(x)
    b(x) = x + 1
End Function

这样,就变得无意义了。但语法上,不算不可以吧[em04]

回复

使用道具 举报

发表于 2010-3-9 22:37 | 显示全部楼层

Function b(Optional x = 0)表示参数x是可选的。你可以用

y=b(5)来调用

也可以使用

y=b

直接来调用。使用y=b来调用时省略了参数x,这样在自定义函数中x设置为默认值为0(你也可以改成optional x=5)。

关于

Sub a()
    Dim arr

    Call b(5)
    ReDim arr(b(5))
    Stop
    
End Sub

Function b(x)
    b(x) = x + 1
End Function

语法上是没有错。只是Call b(5)不起任何作用,因为你没有将这个自定义函数赋值给任何一个变量。

回复

使用道具 举报

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

谢谢八月院长!

学习了

[em27]
回复

使用道具 举报

发表于 2010-3-9 22:52 | 显示全部楼层

[em04][em04][em04]

半夜偷偷回来学习

回复

使用道具 举报

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

QUOTE:
以下是引用lpsh1985在2010-3-9 22:52:00的发言:

[em04][em04][em04]

半夜偷偷回来学习

每天偷偷回,才是真的男人

[em03]
回复

使用道具 举报

发表于 2010-3-16 10:27 | 显示全部楼层

没懂

回复

使用道具 举报

发表于 2010-3-16 10:33 | 显示全部楼层

学习
回复

使用道具 举报

发表于 2010-3-18 17:15 | 显示全部楼层

跟着学习一下
回复

使用道具 举报

发表于 2010-3-23 00:47 | 显示全部楼层

路过学习下难难的问题。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 11:18 , Processed in 0.381346 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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