VBA中函数的默认返回类型是什么?

时间:2014-07-07 13:43:05

标签: function vba return-type

刚才意识到我不知道答案,也没有关于SO的问题,所以在这里:

当没有指定时,VBA中Function例程的默认返回类型是什么?

2 个答案:

答案 0 :(得分:7)

根据documentation,默认的返回类型为Variant
在以下情况中外:

DefInt I

' Now Itest will be Integer by default
Function Itest
End Function

Sub Test
    Debug.Print TypeName(Itest) 'will print "Integer", remove the 1st line and you will get "Empty"
End Sub

没错,DefInt I表示默认情况下以I开头的所有名称都是整数。

您还可以使用DefBoolDefByteDefCurDefDateDefDblDefIntDefLng,{ {1}},DefLngLngDefLngPtrDefObjDefSngDefStr

您甚至可以声明范围:

DefVar

Source


编辑:

某些带有特殊后缀的名称也会有不同的表现:

DefBool A-C

对于Function a$() End Function Function b!() End Function Function c#() End Function Function d@() End Function Function e%() End Function Function f&() End Function Sub test() Debug.Print "a$ : " & TypeName(a$) ' String Debug.Print "b! : " & TypeName(b!) ' Single Debug.Print "c# : " & TypeName(c#) ' Double Debug.Print "d@ : " & TypeName(d@) ' Currency Debug.Print "e% : " & TypeName(e%) ' Integer Debug.Print "f& : " & TypeName(f&) ' Long End Sub ,还有LongLong但仅适用于64位实现

Documentation
Related topic

答案 1 :(得分:5)

如果未明确指定类型,则Variant是默认值。

从技术上讲,这是一个0,而vbEmpty又是Variant,但我们不再详细讨论这个简单问题。 {{1}}可能会根据返回的值(如果有)更改其类型。请参阅this interesting post

相关问题