Странный синтаксис функции InStr.

Если вы используете в своей программе на VBA функцию InStr, которая ищет подстроку в строке, то вы можете столкнуться с такой ошибкой как:

Error 13 Type mismatch.

Если внимательно почитать описание этой функции в MSDN, то сразу понять источник ошибки не получится. Вроде и параметры все понятны и просты — а не работает!

Параметры

Start

Необязательно. Числовое выражение, задающее начальную позицию для каждого поиска. Если выражение опущено, поиск начинается с позиции первого символа. Начальный индекс начинается с 1.

String1

Обязательно. Выражение String для поиска.

String2

Обязательно. Искомое выражение String.

Compare

Необязательно. Указывает тип сравнения строк. Если Compare не задан, параметр Option Compare определяет тип сравнения.

Все дело в необязательном аргументе Compare. Если вы указываете его явно, то НЕОБХОДИМО ЯВНО задать параметр Start.

Например:

  • Instr(«В ЭТОМ ТЕКСТЕ ИЩЕМ», «ТЕКСТЕ»,1) – при выполнении будет ошибка
  • Instr(1, «В ЭТОМ ТЕКСТЕ ИЩЕМ», «ТЕКСТЕ»,1) – вызов функции отработает правильно!

Вот такой вот странный необязательный синтаксис! 🙂

Добавить комментарий

Ваш e-mail не будет опубликован.