刚才意识到我不知道答案,也没有关于SO的问题,所以在这里:
当没有指定时,VBA中Function
例程的默认返回类型是什么?
答案 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
开头的所有名称都是整数。
您还可以使用DefBool
,DefByte
,DefCur
,DefDate
,DefDbl
,DefInt
,DefLng
,{ {1}},DefLngLng
,DefLngPtr
,DefObj
,DefSng
,DefStr
您甚至可以声明范围:
DefVar
某些带有特殊后缀的名称也会有不同的表现:
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位实现
答案 1 :(得分:5)
如果未明确指定类型,则Variant
是默认值。
从技术上讲,这是一个0
,而vbEmpty
又是Variant
,但我们不再详细讨论这个简单问题。 {{1}}可能会根据返回的值(如果有)更改其类型。请参阅this interesting post