Если вы прочитали страницу поддержки MSDN для оператора вызова , для конкретного случая o VBA, по крайней мере, он говорит, что Вызов является необязательным, но что очень важно об этом, и никто, кажется, не замечает, это цитируемая строка:
" Если вы используете синтаксис Call для вызова какой-либо встроенной или определенной пользователем функции, возвращаемое значение функции отбрасывается. "
Вот почему Звонить далеко не бесполезен. Допустим, вы пишете Sub SupportTasks , который делает для вас очень важные вещи Main Subs (например, он импортирует данные из файла, который будет использоваться различными процедурами). Теперь обратите внимание, что, поскольку SupportTasks читает внешние данные, всегда существует большая вероятность того, что эти данные не будут стандартными, и подчиненное устройство не сможет выполнять свою роль. Что ты делаешь?
Вы можете, например, использовать логические функции, которые возвращают False , если что-то идет не так. Вместо вызова подпрограммы, вызовите функцию SupportTasks внутри и Если оператор, который будет выходить из подпрограммы Main, если есть аномалия:
If Not SupportTasks(SomeArgument) Then
Application.ScreenUpdating = True
Exit Sub
'Else continue the Main sub regularly without writing anything in here
End If
Если вам интересно, что, черт возьми, это имеет отношение к Call , учтите следующее: в другом сабвуфере я вызываю SupportTasks , но мне не нужно его возвращенное логическое значение значение (например, я уверен, что ошибка не произойдет). Что ж, если я не введу это в оператор If или не назначу функцию бесполезной переменной, VBA не скомпилирует и не выдаст мне ошибку ( вызов процедуры недействителен, бла-бла-бла, необходимо присвоить значение к чему-то бла-бла-бла ). Вот где Позвоните , чтобы спасти день!
Call SupportTasks(SomeArgument) '<< "Call Function" call doesn't return an error
Если вы все еще думаете, что это бесполезно, думайте об этом как о ресурсе, чтобы оставаться организованным. Написание отдельных процедур для подпрограмм, используемых многими процедурами, делает ваш код короче и более понятным , особенно когда вы пишете действительно большие приложения. Например, ERP, построенные на основе интеграции Excel-Access, могут быть проще в эксплуатации, ремонте и настройке, если ваш ИТ-отдел не спешит доставить / внедрить реальную систему ...
В заключение немного интернет-мудрости:
Всегда пишите свой код, как если бы человек, который будет проверять его, был убийственным психопатом, который знает, где вы живете.
Аминь.