3 回答

TA貢獻1775條經(jīng)驗 獲得超8個贊
從這里:
使用VBScript調(diào)用語句 調(diào)用子例程當您希望調(diào)用子例程時,可以選擇使用Call語句。與Sub一起使用時,Call語句的目的是允許您將參數(shù)列表括在括號中。但是,如果子例程未傳遞任何參數(shù),則在使用Call語句調(diào)用Sub時,仍不應使用括號。
Call MySubroutine
如果子例程具有參數(shù),則在使用Call語句時必須使用括號。如果有多個參數(shù),則必須用逗號分隔參數(shù)。
Call MySubroutine(intUsageFee, intTimeInHours, "DevGuru")
調(diào)用函數(shù) 有兩種方法可以調(diào)用函數(shù)。您可以直接調(diào)用該函數(shù)(僅按名稱),也可以使用VBScript Call語句進行調(diào)用。
通過名稱 調(diào)用函數(shù)當直接通過名稱調(diào)用函數(shù)且未分配返回值時,以下所有均為合法語法:
MyFunction
MyFunction()
MyFunction intUsageFee, intTimeInHours, "DevGuru"
如果需要返回值,可以將函數(shù)分配給變量。請注意,如果有一個或多個參數(shù),則必須使用括號。
returnval = MyFunction
returnval = MyFunction()
returnval = MyFunction(intUsageFee, intTimeInHours, "DevGuru")

TA貢獻1895條經(jīng)驗 獲得超3個贊
我只是發(fā)現(xiàn)了一些奇怪的行為,即在調(diào)用帶有/不帶有括號的函數(shù)時。谷歌把我?guī)У竭@里。
sub test()
dim a as double
a = 1#
p(a) 'this won't change a's value
Debug.Print a '1
p a ' this is expected behavior
Debug.Print a '2
Call p(a) 'this is also valid
Debug.Print a '3
end sub
Function p(a as Double) 'default is byref
a = a + 1
end function
我的結(jié)論是,僅使用一個參數(shù)調(diào)用函數(shù)時,您必須使用Call或省略括號,否則該參數(shù)不會通過引用傳遞(正如我已經(jīng)檢查過的那樣,它仍然會被調(diào)用)。
添加回答
舉報