— Никак нет! Не атавизм, и убрать нельзя.
Зачем же оно тогда нужно, если можно всегда обойтись без него?
А вот не всегда. Это фича
 
 - Код: Выделить всё
- Public Sub Name()
 MsgBox "Я процедура Name"
 End Sub
 Private Sub Main()
 On Error Resume Next
 Call Name
 Name "c:\pagefile.sys" As "c:\swapfile.sys"
 End Sub
А теперь попробуйте убрать Call и посмотрите, что получится. Или попробуйте придумать, как здесь обойтись без Call.
В VB есть два семейства ключевых слов: ключевые слова из одного никогда не могут быть использованы в качестве имён процедур/функций/переменных и т.п. Кл. слова из вторых — могут.
В частности, вы можете создать свойство с именем «Property»:
- Код: Выделить всё
- Public Property Get Property()
 End Property
 Public Property Let Property(ByVal vNewValue)
 End Property
Зачем это может быть нужно? В таком виде, вряд ли это полезно, но если вспомнить про параметрические свойства:
- Код: Выделить всё
- Public Property Get Property(Property_Id_Or_Name)
 ' Какой-нибудь мудрёный код
 End Property
 Public Property Let Property(Property_Id_Or_Name, ByVal vNewValue)
 ' Какой-нибудь мудрёный код
 End Property
даёт вам возможность делать так:
- Код: Выделить всё
- SomeObject.Property("Color") = xyz
 SomeObject.Property("Width") = abc
 SomeObject.Property("Style") = 123
 Ivan.Property("Имя второй жены") = "Мария"
Или даже так:
- Код: Выделить всё
- SomeObject!Color = xyz
 SomeObject!Width = abc
 SomeObject!Style = 123
 Ivan![Имя второй жены] = "Мария"
Ну в каком ещё языке возможны такие трюки?









