Формат - ожидаемый массив - PullRequest
0 голосов
/ 04 ноября 2019

Я получаю сообщение об ошибке, когда пытаюсь отформатировать это число. Я уже делал это в VBA и пытался изменить SOPID на вариант, строку и целое число.

Dim SOPID As Integer
SOPID = DMax("file_id", "tblSOP") + 1

'Output test data
MsgBox (format(SOPID, "000"))

Я понятия не имею, что я делаю неправильно.

1 Ответ

3 голосов
/ 04 ноября 2019

Если код был вставлен непосредственно из вашей 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...