У меня есть рабочий макрос VB, который проверяет содержимое. Он принимает два строковых параметра (значение ячейки и регулярное выражение) и возвращает либо True, либо False. Он использует CreateObject("VBscript.regexp")
внутреннего использования.
Мне нужно использовать этот макрос для проверки ячейки. Когда я пытаюсь установить его в качестве пользовательского валидатора путь
=Rex(E2, "\d{1,2}\:\d{2}")
где Rex - это моя функция, определенная на той же электронной таблице (Alt-F11 и тип), а E2 - это ячейка, которую я пытаюсь проверить, я получаю сообщение "Указанный вами именованный диапазон не найден".
Если я вставлю ту же функцию в другом месте в той же таблице (скажем, в верхнем углу ячейки A1):
=Rex(E2, "\d{1,2}\:\d{2}")
Это показывает, что мне приятно TRUE
если ячейка E2 исправляет правильное значение, например 15:07
и FALSE
если ей не нравится 15xx
- половина решена, но на самом деле не до конца. Мне действительно нужно интегрировать мой валидатор стандартным способом.
Я использую MS Excel 2010. Сам макрос
Public Function Rex(ByVal vsStringIn As String, ByVal vsPattern As String) As Boolean
Dim objRegEx As Object
Set objRegEx = CreateObject("VBscript.regexp")
objRegEx.Global = True
objRegEx.Pattern = vsPattern
Rex = objRegEx.Test(vsStringIn)
Set objRegEx = Nothing
End Function
И проблема выглядит