| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1029 人关注过本帖
标题:能否自定义一个不确定参数个数的函数?
只看楼主 加入收藏
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
班门弄斧,不好意思。

2007-10-21 18:54
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
以下是引用hyhhd在2007-10-21 18:20:59的发言:

Option Explicit


Public Function Max(Optional ByVal Value) As Double
Dim x As Variant
Dim Temp As Double
Dim Temp1() As String

On Error Resume Next

If IsMissing(Value) = True Then
Exit Function

End If

If IsArray(Value) = True Then ''''''''(1)如果Value为数组'''''''
Temp = Value(LBound(Value))
For Each x In Value
If x > Temp Then
Temp = x

End If

Next

ElseIf VarType(Value) = vbString Then '''''(2)如果value为字符串''''''''
Temp1 = Split(Value, ",")
Temp = Temp1(LBound(Temp1))
For Each x In Temp1
If x > Temp Then
Temp = x

End If

Next

End If

Max = Temp

End Function


Private Sub Command1_Click()
Dim Value(4) As Double

Value(0) = -100.5
Value(1) = 9.56325
Value(2) = -20
Value(3) = 100.284
Value(4) = -30.5
Text2 = Max(Value)

End Sub

Private Sub Text1_Change()
Text2 = Max(Text1)

End Sub

我试试看,这个挺有用的样子啊

[此贴子已经被作者于2007-10-21 19:17:08编辑过]


从BFS(Breadth First Study)到DFS(Depth First Study)
2007-10-21 19:16
yeshirow
Rank: 4
等 级:贵宾
威 望:10
帖 子:854
专家分:0
注 册:2006-6-8
收藏
得分:0 
以下是引用multiple1902在2007-10-21 16:48:19的发言:

Function Max(params() as integer) as integer

...
end function


--- 调用:
maxnumber=Max(Array(1,2,3,4,5,6))


不过这样的编程不是必要的,毕竟你写代码的时候用到多少参数就是多少参数,参数数量不应当随着运行状态而变化。但也不一定都是这样子,VS2005中就经常看到数组做为参数提供一套信息。

如此的調用是不行的, params() 明確規定爲 Integer
即使不爲 params() 指定類型, 或者是 Variant, 也不可能使用 Array(...) 來傳遞 params
除非在寫 Max 時使用了 params 而不是 Params()
例如 Private Function Max(Params) As Integer



--------------------------------------------------
多個參數應該使用 ParamArray 關鍵字
例如
Private Function Max(ParamArray args())
'...
End Function
Private Sub Command1_Click()
Debug.Print Max(1, 2, 3, 4)
Debug.Print Max(1, 2, 3, 4, , 6) ' // 包括了可選參數, 這是很隨意的, 第 5 個不必指定甚麽
Debug.Print Max( , 2, 3, 4, , , 7)
Debug.Print Max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
End Sub

但是 ParamArray 必須是 Variant 的, 不能爲使用了 ParamArray 關鍵字的參數使用 As 指定類型
類型檢查必須由程式員手動檢查


原來朋友仔感情再天真, 亦是我永遠也會愛惜的人, 明日愛他人, 也記住學會不要緊; 原來朋友比戀人更高分, 亦讓我開始懂得不記恨, 若大家都敏感, 我更要永遠記得拒絕再因小事怪人, 爲何沒有這條校訓...Twins-朋友仔 MCSD Training
2007-10-22 00:23
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
传数组不就完了,搞的那么复杂干哈.

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-22 09:11
那边有朵蘑菇云
Rank: 1
来 自:很……那啥的一个地方
等 级:新手上路
威 望:1
帖 子:390
专家分:0
注 册:2007-9-3
收藏
得分:0 
以下是引用随风逐流在2007-10-22 9:11:29的发言:
传数组不就完了,搞的那么复杂干哈.

我也有同感


身不残 志更不坚
2007-10-22 09:36
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
LS一来就灌水,这样是不行的呀.

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-22 09:51
那边有朵蘑菇云
Rank: 1
来 自:很……那啥的一个地方
等 级:新手上路
威 望:1
帖 子:390
专家分:0
注 册:2007-9-3
收藏
得分:0 
不是灌水 是我同意你的想法 没办法啊 哈哈哈哈

身不残 志更不坚
2007-10-22 11:53
hyhhd
Rank: 2
等 级:论坛游民
威 望:1
帖 子:502
专家分:44
注 册:2006-5-12
收藏
得分:0 
又学了一招。

2007-10-22 13:01
快速回复:能否自定义一个不确定参数个数的函数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015513 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved