Выпуск VBA Regex - PullRequest
       5

Выпуск VBA Regex

2 голосов
/ 15 июля 2010

имеет VBA любой хороший механизм для проверки, если содержимое данной ячейки Excel соответствует определенному регулярному выражению?

В моем случае я хочу знать, имеет ли какая-либо ячейка формат

m
m2
m1234

На самом деле в начале есть только одна определенная буква, за которой следует не указанное количество цифр.

Как мне поместить это в конструкцию If-Else?

If Doc.Cells(1,1).Value ..... ???

привет, poeschlorn

Ответы [ 3 ]

5 голосов
/ 15 июля 2010

Вы можете получить в объектах VBScript RegExp через Сервис-> Ссылки и добавив «Регулярные выражения Microsoft VBScript 5.5»

В качестве альтернативы быстрый способ сделать это, если вам не нужно проверять последующиебуква `m1234X1:

if Doc.Cells(1,1).Value like "[a-zA-Z]#*" then ...

(ссылка на что-либо не требуется)

0 голосов
/ 30 июня 2011

Вот моя функция RegexContains.Передайте ему ячейку и шаблон, и он вернет ИСТИНА или ЛОЖЬ, если он будет содержаться или нет.

Function RegexContains(ByVal find_in As String, _
                       ByVal find_what As String, _
                       Optional IgnoreCase As Boolean = False) As Boolean

Application.ScreenUpdating = False

Dim RE As Object
Set RE = CreateObject("vbscript.regexp")

RE.Pattern = find_what
RE.IgnoreCase = IgnoreCase
RE.Global = True
RegexContains = RE.Test(find_in)

Application.ScreenUpdating = True

End Function

Теперь я не совсем уверен, что именно вы хотите найти в своем примере, но если выхотите знать, содержит ли ячейка одну букву, за которой следуют одна или несколько букв, тогда вы должны использовать (при условии, что ячейка A1): = RegexContains (A1, "^ \ w \ d +")

  • ^ Отмечает начало предложения
  • \ w отмечает один буквенный символ (a-zA-Z)
  • \ d + отмечает один или несколько числовых символов [0-9]

Надеюсь, это поможет.

0 голосов
/ 15 июля 2010

Я не знаю VBA, но регулярное выражение [a-zA-Z][0-9]* может соответствовать тому, что вы хотите.

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