Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2021, 09:50   #1
Сеanonselen-Ткачук
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию Точки в ФИО

Помогите исправить код vba.
В поле, куда вводится ФИО есть код, который начинает слова с заглавной буквы. ФИО вводится в формате "Иванов И.П."
Код:
Private Sub TextBox4_Change()
TextBox4.Text = Application.WorksheetFunction.Proper(TextBox4.Text)
End Sub
Нужно, чтобы после имени и отчества (т.е.после второй и третьей заглавных букв) ставились точки (например, в "Иванов И.П." - после "И" и "П").
Сеanonselen-Ткачук вне форума Ответить с цитированием
Старый 22.12.2021, 11:07   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

зачем точки если
Цитата:
Сообщение от Сеanonselen-Ткачук Посмотреть сообщение
ФИО вводится в формате "Иванов И.П."
?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.12.2021, 12:24   #3
Сеanonselen-Ткачук
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию

Потому что те, кто вводит данные - не ставят их, а раньше ещё и писали не учитывая регистр. Часто получалось "иВАНОВ ИП". Если с заглавными буквами проблема отпала, то с точками осталась.
Сеanonselen-Ткачук вне форума Ответить с цитированием
Старый 22.12.2021, 13:46   #4
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 957
По умолчанию

сделать макрос массовой замены:

пробел и 2 большие буквы
заменять на как нужно с точками

оформив макрос про 2 большие буквы
через циклы с кодами больших букв

и примерный макрос: в моей теме
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Старый 22.12.2021, 14:16   #5
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так ето обработку "на лету" надо делать, по мере ввода текста пользователем?

И что, после прогона вашего кода с п.1 вместо "иВАНОВ ИП" получаете "Иванов ИП"?
Цитата:
Сообщение от Сеanonselen-Ткачук Посмотреть сообщение
Часто получалось "иВАНОВ ИП"


Могу предложить постобработку введенного текста
Код:
Function ПРОСТАВЬТОЧКИ(sText As String) As String
    Dim ch As String
    Dim i As Integer
    Dim sResult As String
    Dim iUpperCount As Integer
    sText = Application.WorksheetFunction.Proper(sText) & " "
    sResult = vbNewLine
    iUpperCount = 0
    For i = 1 To Len(sText) - 1
        ch = Mid(sText, i, 1)
        sResult = sResult & ch
        If LCase(ch) <> UCase(ch) Then
            If ch = UCase(ch) Then iUpperCount = iUpperCount + 1
            If ch = UCase(ch) And (iUpperCount = 2 Or iUpperCount = 3) Then
                If Mid(sText, i + 1, 1) <> "." Then sResult = sResult & "."
            End If
        End If
    Next i
    ПРОСТАВЬТОЧКИ = sResult
End Function
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.

Последний раз редактировалось Aleksandr H.; 22.12.2021 в 14:20.
Aleksandr H. вне форума Ответить с цитированием
Старый 22.12.2021, 19:24   #6
Сеanonselen-Ткачук
 
Регистрация: 27.11.2021
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Function ПРОСТАВЬТОЧКИ(sText As String) As String
Dim ch As String
Dim i As Integer
Dim sResult As String
Dim iUpperCount As Integer
sText = Application.WorksheetFunction.Prope r(sText) & " "
sResult = vbNewLine
iUpperCount = 0
For i = 1 To Len(sText) - 1
ch = Mid(sText, i, 1)
sResult = sResult & ch
If LCase(ch) <> UCase(ch) Then
If ch = UCase(ch) Then iUpperCount = iUpperCount + 1
If ch = UCase(ch) And (iUpperCount = 2 Or iUpperCount = 3) Then
If Mid(sText, i + 1, 1) <> "." Then sResult = sResult & "."
End If
End If
Next i
ПРОСТАВЬТОЧКИ = sResult
End Function
Да, я хотел, чтобы при вводе ФИО в Textbox формы и нажатии на кнопку ввода, данные в таблицу вносились с точками после имени и отчества. Сейчас ФИО вводится в нужном регистре и все мне нравится, хотелось бы довести до идеала Я не знаю как это сделать. Может нужно как-то вставлять эти точки с конца в 1 позиции, потом идет буква отчества, потом опять точка (получается 3-я позиция), потом буква имени.
Сеanonselen-Ткачук вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С# Требуется задача которая будет требовать ввод (id ФИО Кол-воТрафика(в месяц)), а на вывод (id ФИО Кол-воТрафика(в срок) LLLEPb Помощь студентам 2 15.12.2016 17:14
Запрет ввода в TextBox букв и . (точки) / Или автозамена точки на запятую uralshans Microsoft Office Excel 4 30.08.2013 00:24
Имеются координаты точки. Как проверить какого цвета соседние точки на форме? Rin Мультимедиа в Delphi 2 10.11.2009 22:47
даны две точки. организовать движение из точки А в точку Б окружности! Wi1D Помощь студентам 6 23.05.2009 19:55
Отбражение чисел - точки, это точки, а не запятые, обозначающие дробную часть Дикий Помощь студентам 7 12.05.2008 17:57