Если код был вставлен непосредственно из вашей IDE, регистр format
является подозрительным;это будет Format
, если только нет переменной или функции format
, которые находятся в области видимости, ... и это вызывается здесь.
Ищите общедоступный (может быть неявно Public
, или если он находится в том же модуле, то это также может быть Private
) format
функция-функция, которая ожидает аргумент массива: очень вероятно, что здесь вызывается.
Rubberduck (бесплатно, с открытым исходным кодом; я управляю этим проектом) может помочь вам легко точно определить, что именно вызывается, и инспекция расскажет вам о любых скрытых декларациях , но, чтобы убедиться, что вы можете полностью квалифицироватьвызов функции, чтобы избежать непреднамеренного вызова другой функции, которая находится в области видимости:
MsgBox VBA.Strings.Format$(SOPID, "000")
Обратите внимание, что вокруг списка аргументов вызова параметризованной процедуры в VBA нет скобок;круглые скобки, которые у вас есть, окружают первый аргумент и заставляют выражение оцениваться как значение, которое затем передается вызываемой функции: это не обязательно.
Также обратите внимание на $
: функция VBA.Strings.Format
принимает и возвращает Variant
;VBA.Strings.Format$
принимает и возвращает String
. Если вы не имеете дело с какими-либо значениями Null
(Integer
не может быть Null
), попробуйте использовать псевдоним String
.