Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Формат текста под Фамилию И.О. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формат текста под Фамилию И.О. (Макросы/Sub)
Формат текста под Фамилию И.О.
Сергей13 Дата: Вторник, 06.07.2021, 13:16 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 342
Репутация: -3 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!
Если это возможно, то как создать условие для текстовых данных в данном случаи формат фамилии и инициалов. Количество знаков в фамилии максимум 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
[/vba]

Автор - Сергей13
Дата добавления - 06.07.2021 в 13:16
Nic70y Дата: Вторник, 06.07.2021, 15:30 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 6932
Репутация: 1599 ±
Замечаний: 0% ±

Excel 2010
вдруг правильно
[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
[/vba]


ЮMoney(Яндекс Деньги) 41001841029809

Сообщение отредактировал Nic70y - Вторник, 06.07.2021, 15:31
 
Ответить
Сообщениевдруг правильно
[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
[/vba]

Автор - Nic70y
Дата добавления - 06.07.2021 в 15:30
прохожий2019 Дата: Вторник, 06.07.2021, 20:40 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 611
Репутация: 141 ±
Замечаний: 0% ±

365 Beta Channel
[vba]
Код
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
[/vba]

Автор - прохожий2019
Дата добавления - 06.07.2021 в 20:40
Сергей13 Дата: Среда, 07.07.2021, 16:31 | Сообщение № 4
Группа: Проверенные
Ранг: Обитатель
Сообщений: 342
Репутация: -3 ±
Замечаний: 0% ±

Excel 2016
Здравствуйте!
С функцией не разобрался как ее корректно вписать или использовать в коде.
А в примере от Nic70y пришлось добавить обработчик ошибок потому как при некоторых неправильных комбинациях с текстом выдает ошибки.
Благодарю ребята за помощь!
 
Ответить
СообщениеЗдравствуйте!
С функцией не разобрался как ее корректно вписать или использовать в коде.
А в примере от Nic70y пришлось добавить обработчик ошибок потому как при некоторых неправильных комбинациях с текстом выдает ошибки.
Благодарю ребята за помощь!

Автор - Сергей13
Дата добавления - 07.07.2021 в 16:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Формат текста под Фамилию И.О. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования Jobsora jooble
© 2010-2021 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!