3 回答

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

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
我只是發(fā)現(xiàn)了一些奇怪的行為,即在調(diào)用帶有/不帶有括號(hào)的函數(shù)時(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é)論是,僅使用一個(gè)參數(shù)調(diào)用函數(shù)時(shí),您必須使用Call或省略括號(hào),否則該參數(shù)不會(huì)通過(guò)引用傳遞(正如我已經(jīng)檢查過(guò)的那樣,它仍然會(huì)被調(diào)用)。
添加回答
舉報(bào)