3 回答

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

TA貢獻1895條經驗 獲得超3個贊
我只是發現了一些奇怪的行為,即在調用帶有/不帶有括號的函數時。谷歌把我帶到這里。
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
我的結論是,僅使用一個參數調用函數時,您必須使用Call或省略括號,否則該參數不會通過引用傳遞(正如我已經檢查過的那樣,它仍然會被調用)。
添加回答
舉報