argument not optional vba ошибка

Я пытаюсь понять это и не могу.

Я все время получаю сообщение об ошибке: «Ошибка компиляции — аргумент не является обязательным». Я поставляю аргументы, и они установлены как Необязательно!

Попытка передать строку и массив функции и подсчитать вхождения строк массива в переданной строке.

Код перестает работать в строке:

с сообщением «Ошибка компиляции: аргумент не факультативно», выделив Val в строке:

Val — это функция VBA, для которой требуется одиночный, обязательный, аргумент. Поэтому компилятор генерирует сообщение «Аргумент не факультативный», если вы не предоставляете этот аргумент. (Документация MSDN Val )

Плохая идея использовать имена функций VBA в качестве имен переменных, поэтому я бы рекомендовал, чтобы вы не использовали Val в качестве имени переменной — используйте myVal или что-то еще, что VBA еще не использовал.

Если вы действительно хотите использовать Val (и вы уверены, что вам вообще не понадобится доступ к функции Val ), вы можете использовать его как имя переменной если вы просто объявите его как таковой, например

У вас также будут проблемы с вашей линией, говоря

как countTextInText объявлен как Integer , а Set должен использоваться только при установке переменной в качестве ссылки на объект. Так что строка должна быть

Количество и типы аргументов должны совпадать ожидалось. The number and types of arguments must match those expected. Неправильное число аргументов является либо пропущенный аргумент не является необязательным. Either there is an incorrect number of arguments, or an omitted argument is not optional. Аргумент можно опустить из-за обращения к определяемой пользователем процедуры, только если он был объявлен Optional в определении процедуры. An argument can only be omitted from a call to a user-defined procedure if it was declared Optional in the procedure definition.

Исправление ошибки To correct this error

Введите все необходимые аргументы. Supply all necessary arguments.

Убедитесь, что пропущенные аргументы являются необязательными. Make sure omitted arguments are optional. Если они отсутствуют, либо аргумента в вызове, либо объявить параметр Optional в определении. If they are not, either supply the argument in the call, or declare the parameter Optional in the definition.

I’m trying to figure this out and can’t.

I keep getting an error: «Compile error — Argument not optional». I am supplying the arguments and they are set as Optional!

Trying to pass a string and an array to a function and count occurrences of the array strings within the string passed.

Code stops running at the line:

with a «Compile error: Argument not optional» message highlighting the Val in the line:

2 Answers 2

Val is a VBA function which requires a single, mandatory, argument — therefore the compiler generates the message saying «Argument not optional» if you don’t provide that argument. (MSDN documentation of Val )

It is a bad idea to use VBA function names as variable names, so I would recommend you don’t use Val as a variable name — use myVal or anything else that VBA hasn’t already used.

If you really want to use Val (and you are sure that you won’t be needing to access the Val function at all), you can use it as a variable name if you simply declare it as such, e.g.

You will also have problems with your line saying

as countTextInText has been declared to be an Integer , and Set should only be used when setting a variable to be a reference to an object. So that line should be

Оцените статью