3

Я пытаюсь найти в своей таблице Excel любую ячейку, значение которой начинается с числа, за которым следует точка, но это не работает. Кто-нибудь знает почему нет?

Cells.Find(What:="[0-9].", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Select

1 ответ1

1

Я пытаюсь найти в своей таблице Excel любую ячейку, значение которой начинается с числа, за которым следует точка, но это не работает.

Кто-нибудь знает почему нет?

Период . имеет особое значение в регулярном выражении, это означает "Соответствует любому отдельному символу".

Если вы хотите соответствовать буквальному периоду . вам нужно избежать особого значения. \ используется в качестве escape-символа (например, "\." , "\\").

Таким образом, ваше выражение должно быть "[0-9]\." чтобы соответствовать буквальному периоду . ,

Чтобы сопоставить более одной цифры, за которой следует точка, используйте "[0-9]+\." (+ используется, чтобы соответствовать предыдущему выражению один или несколько раз).

См. VBA RegEx: Как оценить и использовать «Регулярные выражения» для получения дополнительной информации.

Примечание. Насколько мне известно, cells.find() не поддерживает регулярные выражения.

Вам нужно использовать класс RegExp .

Регулярные выражения (RegExp) - это класс, который предлагает невероятно мощные возможности синтаксического анализа текста, в частности, позволяет пользователям находить (и даже заменять) подстроки в больших текстовых записях, которые соответствуют определенному шаблону. Эта статья содержит основную информацию о реализации RegExp на VBScript и о том, как ее использовать, чтобы получить надежные возможности анализа текста в проектах Visual Basic 6 (VB6) и Visual Basic для приложений (VBA). Обладая небольшим знанием правил и некоторым воображением, вы можете создавать невероятно гибкие и / или сложные шаблоны.

...

Добавив эти функции в свои проекты VB6/VBA, вы можете быстро и легко внедрить функции RegExp в свои приложения. Если вы являетесь пользователем Microsoft Office, вы даже можете использовать эти функции в формулах рабочего листа для Microsoft Excel или в запросах в Microsoft Access.

Источник Использование регулярных выражений в Visual Basic для приложений и Visual Basic 6 для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .