В макросах для Excel иногда требуется производить проверку адреса электронной почты на корректность. В большинстве случаев нужно быть уверенным не только в том, что такой адрес содержит знак @ и точку, но и в том, что все остальные символы представлены буквами, числами или знаками подчеркивания. Sub ПримерПроверкиАдресаПочты() Debug.Print CheckEmail("order@ExcelVBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("123-order@ExcelVBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("create.order@Excel.VBA.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("mail@Excel-macro.ru") ' возвращает TRUE (корректный адрес почты) Debug.Print CheckEmail("order@ExcelVBA") ' возвращает FALSE (ошибка в адресе почты) Debug.Print CheckEmail("order.ExcelVBA.ru") ' возвращает FALSE (ошибка в адресе почты) Debug.Print CheckEmail("order.ExcelVBA@ru") ' возвращает FALSE (ошибка в адресе почты) End Sub Используемый в функции шаблон может принимать любое количество цифр и букв, символов подчеркивания, точки и тире перед знаком «@» и после символа «@» до точки, но только числа, буквы и символы подчеркивания после точки. Код функции CheckEmail: Function CheckEmail(ByVal email As String) As Boolean ' функция проверяет на корректность (соответствию стандарту) ' адрес почты email, переданный ей в качестве параметра ' (используется проверка на соответствие регулярному выражению) ' Функция возвращает TRUE, если адрес корректный, и FALSE в обратном случае With CreateObject("vbscript.regexp") .IgnoreCase = True .Pattern = "^[\w-\.]+@[\w-\.]+\.\w+$" CheckEmail = .Test(email) End With End Function PS: Хочу заметить, что, на самом деле, проверка синтаксиса адреса email - задача весьма нетривиальная, поскольку стандарты, описанные в документах RFC 5322 и RFC 5321, допускают самые неожиданные варианты допустимых адресов PPS: Аналогичная функция для проверки корректности IP адреса: Function IsIP(ByVal txt As String) As Boolean 'возвращает TRUE, если IP адрес узла корректен With CreateObject("vbscript.regexp") .IgnoreCase = True .Pattern = "\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" IsIP = .Test(txt) End With End Function
|
|||

Комментарии
Пример чего?
Я не телепат, и не представляю, для каких целей вы намерены использовать функцию.
(в коде, или как UDF на листе Excel, или ещё как-то)
А переделывать пример несколько раз - как-то нет особого желания.
а можно написать пример? и выложить ссылку?
Отправить комментарий