24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1131  |  回复: 5

gis-li

金虫 (小有名气)

[求助] 关于Excel VBA数组操作已有2人参与

请教各位,我想在VBA里自定义一个函数,是对数组进行某种操作的,能不能实现像内部函数UBound(Arr)一样,不管Arr的数据类型是Sting,Integer或者Long,都可以使用该函数而不报类型不匹配错误。比如如下调用UBound都是没问题的。
Dim a(5) as String
Dim b(10) as Long
Dim n as Integer
n=UBound(a)  
n=UBound(b)  

那么我该如何自定义一个函数也可以 不受数组存储数据类型限制,以执行Test()不报类型不匹配的错误。

Public Function myFun(Arr() as ?) as Boolean
'-------------
End Function

Private Sub Test()

    Dim Arr1(5) as String
    Dim Arr2(10) as Integer

    Msgbox myFun(Arr1)
    Msgbox myFun(Arr2)

End Sub
回复此楼
快乐科研
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

deephill

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
gis-li: 金币+5 2014-12-26 17:05:16
我觉得你可以在 test函数中,先判断参数的数据类型,再分别处理,最后输出统一结果。 这样分别处理就不错了。
2楼2014-12-26 10:13:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gis-li

金虫 (小有名气)

引用回帖:
2楼: Originally posted by deephill at 2014-12-26 10:13:21
我觉得你可以在 test函数中,先判断参数的数据类型,再分别处理,最后输出统一结果。 这样分别处理就不错了。

在Test里做判断?那不是我要写多个myFun函数?

我是想如何不在调用函数时做这些判断,即使必须做类型判断也是在myFun里边做,这样函数myFun就具有通用性了,省的不同类型的数组还得调用不同的函数。
快乐科研
3楼2014-12-26 10:52:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gis-li

金虫 (小有名气)

当然在myFun里判断的前提是怎么设置"Arr() As 类型",能先调用myFun而不报错.
快乐科研
4楼2014-12-26 10:57:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxiaochun

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
gis-li: 金币+10, 有帮助 2014-12-27 22:26:23
Arr as Varient
数组只需要传数组名
5楼2014-12-26 22:10:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gis-li

金虫 (小有名气)

引用回帖:
5楼: Originally posted by zhouxiaochun at 2014-12-26 22:10:20
Arr as Varient
数组只需要传数组名

这个对于内部自带类型确实可以,多谢。

我的程序中还涉及一个自定义类型数据的数组,按照这种参数设置就不行了,提示“只有定义在公共模块中用户定义类型能和变体类型相互转换或传递给后期绑定功能”,请问如何改进?
快乐科研
6楼2014-12-27 22:41:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 gis-li 的主题更新
信息提示
请填处理意见