Всякий раз, когда вы вызываете подпрограмму или функцию, которая не определена, вы получаете ошибку несоответствия типов.
Даже если это само по себе чудо (для которого я мог бы найти разумныйобоснование только для функций, а не для подпрограмм) это указывает на то, что в вашем конкретном сценарии KillProcess не был известен в сценарии, в котором вы его вызвали.
Возможные причины:
- Объявление KillProcess находилось в библиотеке функций, которая не была указана в диалоговом окне настроек связанной библиотеки функций.
- Объявление KillProcess было активным, но ваши вызовы содержали одну или несколько опечаток, например «KillProccess» или аналогичных.Вещи.
Как указал Мотти, размещенный вами фрагмент кода выглядит нормально, поэтому должен быть какой-то другой глюк.
Еще один совет относительно вспомогательных функций и функций: Имейте в виду, что вы обычно никогда не вызываете Sub
в скобках для аргументов.Если вы укажете их, они будут считаться частью терма, который нужно оценить, и, поскольку
X term
совпадает с
X (term)
, следовательно, это не приведет к ошибкесообщение в этом случае.Однако для подпрограмм с двумя или более аргументами указание всех фактических аргументов в одной паре скобок, как в
Y (term1, term2)
, приводит к ошибке, что-то вроде «невозможно вызвать подпрограмму с аргументами в скобках», или около того.Это трудно понять, если учесть, что один аргумент действительно может быть указан в скобках.
(Для более полного обзора по теме паратеза см. ByRef и ByVal в VBScript и связанные вопросы).
Общее предложение: Всегда используйте
option explicit
в начале всех скриптов (особенно библиотек функций).RTFM это при необходимости.Это может выглядеть как дополнительная работа (потому что это заставляет вас объявлять все переменные, прежде чем вы сможете их использовать), но полезно избегать скрытых ошибок.