Обратите внимание, что вызов подфункции / функции без возврата значения должен вызываться без круглых скобок:
content.Append grad
Если функция возвращает какое-то значение, тогда скобки должны быть добавлены
ReturnValue = content.Append(grad)
Но если вы добавите круглые скобки к подпрограмме / функции, которая не вернет любое значение, как вы сделали
content.Append (grad)
…, которое заставляет переменную grad
быть отправленнойByVal
, в то время как ByRef
является стандартным способом их отправки.Таким образом, добавив здесь круглые скобки, вы измените значение с ByRef
на ByVal
(вы также можете видеть пробел между именем функции / поднабора и круглыми скобками).
Пример:
Sub TestFunction(Param1, Param2, Param3) 'all 3 parameters are ByRef by default in VBA (not in VB.NET!)
End Sub
Некоторые примеры вызова этой функции:
'submit 3 parameters ByRef, don't return anything
TestFunction Param1, Param2, Param3
TestFunction(Param1, Param2, Param3) 'throws error
'submit 3 parameters ByRef, return a Value
ReturnValue = TestFunction(Param1, Param2, Param3)
ReturnValue = TestFunction Param1, Param2, Param3 'throws error
'submit parameters 1 and 3 ByVal and 2 ByRef, don't return anything
TestFunction (Param1), Param2, (Param3)
'submit parameters 1 and 3 ByVal and 2 ByRef, return a Value
ReturnValue = TestFunction((Param1), Param2, (Param3))
Хотя с 3 параметрами будет выдано сообщение об ошибке, если вы добавите круглые скобки там, где их не должно быть, с одним параметром будет сложнее,:
TestFunction Param1 'correct
TestFunction (Param1) 'this threw an error with 3 parameters, but does not throw an error
'with one parameter instead it changes behavior ByRef to ByVal
ReturnValue = TestFunction(Param1) 'correct
ReturnValue = TestFunction Param1 'throws error