Если вы читали MSDN Support page for the Call Statement, для конкретного случая O VBA, по крайней мере, это сказать, что вызов не является обязательным, но то, что является очень актуальным об этом, и никто не замечает это цитируемый линия:
«Если использовать либо синтаксис вызова для вызова любой внутренней или определяемой пользователем функции, возвращаемое значение функции отбрасывается.»
Вот почему Вызов далеко не бесполезно. Скажем, вы пишите Sub SupportTasks, который делает для вас очень много полезного материала. Main Subs (например, он импортирует данные из файла, который будет использоваться различными процедурами). Теперь обратите внимание, что с SupportTasks читает внешние данные, всегда есть вероятность, что эти данные не будут стандартными, а суб не сможет выполнить свою роль. Что вы делаете?
Вы можете, например, использовать логические функции, которые возвращают False если что-то пойдет не так. Вместо вызова саба, вызов функции SupportTasks внутри и Если утверждения, что приведет к выходу из основных подчиненного, если есть аномалия:
If Not SupportTasks(SomeArgument) Then
Application.ScreenUpdating = True
Exit Sub
'Else continue the Main sub regularly without writing anything in here
End If
Если вам интересно, что, черт возьми, это связанно с Вызовите, рассмотрите следующее: в другом суб, я вызываю SupportTasks, но мне не нужно его возвращаемое логическое значение (например, я уверен, что ошибка не возникнет). Ну, если я не помещаю его в . Если задание или назначить функцию бесполезной переменной, VBA не будет компилироваться и возвращать мне ошибку (процедура вызова недействительной бла-бла-бла должна присваивать значение что-то бла-бла-бла). Вот где Звонок приходит, чтобы спасти день!
Call SupportTasks(SomeArgument) '<< "Call Function" call doesn't return an error
Если вы все еще считаете, что это бесполезно, подумайте об этом как о ресурсе, чтобы оставаться организованным.Написание отдельных процедур для подпрограмм, разделяемых многими процедурами, делает ваш код короче и более приемлемым, особенно когда вы пишете действительно большие приложения. ФКЗ, построенные из интеграций Excel-Access, например, может быть проще в эксплуатации, ремонта и настройки, если ваш ИТ-отдел медленно доставки/реализовать реальную систему ...
В заключение, некоторые интернет-мудрость:
Всегда пишите свой код, как если бы человек, который его рассмотрит, является убийственным психопатом, который знает, где вы живете.
Amen.
В некоторых случаях использование ключевого слова вызова очень полезно, например, когда вы просто хотите использовать класс один раз. Я использую его сегодня для генерации случайной соли. Вызов New RNGCryptoServiceProvider(). GetBytes (salt) 'без' Call'. Мне пришлось бы иметь переменную как 'RNGCryptoServiceProvider' сначала –
Это легко лучший (если не единственный) повод использовать для использования звонка, о котором я когда-либо слышал. – Pillgram