Здравствуйте! Если это возможно, то как создать условие для текстовых данных в данном случаи формат фамилии и инициалов. Количество знаков в фамилии максимум 20 минимум 2, количество можно и по умолчанию, но первый знак прописной, далее пробел и прописные через точки, имя и отчество. [vba]
Код
Dim FIO FIO = "Ффффффф И.О."
If TextBox = FIO Then 'Если текст в TextBox соответствуют (равен) формату Ффффффф И.О. ComboBox = TextBox End If
[/vba]
Здравствуйте! Если это возможно, то как создать условие для текстовых данных в данном случаи формат фамилии и инициалов. Количество знаков в фамилии максимум 20 минимум 2, количество можно и по умолчанию, но первый знак прописной, далее пробел и прописные через точки, имя и отчество. [vba]
Код
Dim FIO FIO = "Ффффффф И.О."
If TextBox = FIO Then 'Если текст в TextBox соответствуют (равен) формату Ффффффф И.О. ComboBox = TextBox End If
Sub uuuu_() aa = Range("a1").Value 'это типа TextBox (пусть будет) bd = Len(aa) 'длина строки ba = Mid(aa, bd - 2, 1) '1-я точка bc = Right(aa, 1) '2-я точка be = Asc(Mid(aa, bd - 3, 1)) 'код символа 1-я б. имени bf = Asc(Mid(aa, bd - 1, 1)) 'код символа 1-я б. отчества bg = Asc(Left(aa, 1)) 'код символа 1-я б. фамилии bh = Mid(aa, bd - 4, 1) 'пробел sa = "X" If ba = "." And bc = "." And bh = " " And _ be > 191 And be < 224 And _ bf > 191 And bf < 224 And _ bg > 191 And bg < 224 Then sa = "Norm" For i = 2 To bd - 5 sb = Asc(Mid(aa, i, 1)) If sb < 224 Then sa = "X" Next End If 'Range("a2") - это типа ComboBox (пусть будет) If sa = "Norm" Then Range("a2") = Range("a1").Value Else Range("a2") = "" End If End Sub
[/vba]
вдруг правильно [vba]
Код
Sub uuuu_() aa = Range("a1").Value 'это типа TextBox (пусть будет) bd = Len(aa) 'длина строки ba = Mid(aa, bd - 2, 1) '1-я точка bc = Right(aa, 1) '2-я точка be = Asc(Mid(aa, bd - 3, 1)) 'код символа 1-я б. имени bf = Asc(Mid(aa, bd - 1, 1)) 'код символа 1-я б. отчества bg = Asc(Left(aa, 1)) 'код символа 1-я б. фамилии bh = Mid(aa, bd - 4, 1) 'пробел sa = "X" If ba = "." And bc = "." And bh = " " And _ be > 191 And be < 224 And _ bf > 191 And bf < 224 And _ bg > 191 And bg < 224 Then sa = "Norm" For i = 2 To bd - 5 sb = Asc(Mid(aa, i, 1)) If sb < 224 Then sa = "X" Next End If 'Range("a2") - это типа ComboBox (пусть будет) If sa = "Norm" Then Range("a2") = Range("a1").Value Else Range("a2") = "" End If End Sub
Function ФИО_тест(t$) With CreateObject("VBScript.RegExp") .Pattern = "[А-Яа-яЁё]{2,20}\s[А-Яа-яЁё]\.[А-Яа-яЁё]\." ФИО_тест = .Test(t) End With End Function
[/vba]
[vba]
Код
Function ФИО_тест(t$) With CreateObject("VBScript.RegExp") .Pattern = "[А-Яа-яЁё]{2,20}\s[А-Яа-яЁё]\.[А-Яа-яЁё]\." ФИО_тест = .Test(t) End With End Function
Здравствуйте! С функцией не разобрался как ее корректно вписать или использовать в коде. А в примере от Nic70y пришлось добавить обработчик ошибок потому как при некоторых неправильных комбинациях с текстом выдает ошибки. Благодарю ребята за помощь!
Здравствуйте! С функцией не разобрался как ее корректно вписать или использовать в коде. А в примере от Nic70y пришлось добавить обработчик ошибок потому как при некоторых неправильных комбинациях с текстом выдает ошибки. Благодарю ребята за помощь!Сергей13