Невозможно использовать скобки при вызове Sub:
При вызове процедуры, которая не возвращает значение, используя скобки вокруг нескольких аргументов, переданных процедуре, это приведет к;
Ошибка компиляции Microsoft VBScript: невозможно использовать круглые скобки при вызове Sub
Здесь есть предостережение: если это всего лишь один аргумент, его не скомпилируют, но это не потому, что он принимает один аргумент, а потому, что он видит скобки как часть аргумента, а не часть процедуры (Эрик Липперт подробно обсуждает это в своем блоге ) ;
MsgBox("Hi") 'Will work
Это эквивалентно письму;
Call MsgBox(("Hi")) 'Note the extra brackets
Это может немного сбивать с толку, поэтому, когда дело доходит до нескольких аргументов, вы можете подумать, что это нормально;
MsgBox("you ok", vbyesno, "how are you?") 'This will error
Но так как квадратные скобки теперь обозначают скобки аргумента, он становится недействительным и выдает ошибку компиляции. Чтобы избежать этого, есть три вещи, которые вы можете сделать:
Снять скобки
MsgBox "you ok", vbyesno, "how are you?"
Возвращает значение (если процедура может вернуть значение)
result = MsgBox("you ok", vbYesNo, "how are you?")
Когда вы проверяете значение result
в следующей строке, это будет правильным вариантом, поскольку result
будет содержать результат нажатия либо vbYes
, либо vbNo
в функции MsgBox()
.
Используйте оператор Call
для префикса вызова процедуры
Call MsgBox("you ok", vbYesNo, "how are you?")