Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/124: Рейтинг темы: голосов - 124, средняя оценка - 4.98
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718

Склонение фамилий, имен и отчеств по падежам

28.11.2011, 20:04. Показов 26667. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли програмно заставить VBA склонять по отменкам Фамилию, Имя и Отчество?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2011, 20:04
Ответы с готовыми решениями:

Склонение фамилий по падежам
Вводят вопросы вида (кто, кого, кому, кем, на ком) и фамилию, например "Иванов". Ответ выдавать в виде , "Иванову",...

Склонение фамилий по падежам
11. Вводят вопросы вида (кто, кого, кому, кем, на ком) и фамилию, например "Петренко". Ответ выдавать в виде "Петренко",...

Генератор имён, фамилий и отчеств
Нужна помощь в написании программы на c++ Программа должна из файла брать данные( к примеру есть текстовик с 10000 именами) и по...

8
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.11.2011, 20:27
IvanOK, Я такое видел в довольно недешевой проге, к которой цеплялась библиотека с базой имен, фамилий и отчеств, название библиотеки было чем-то похожим на padej.dll

Ту библу я чего то не взял тогда, а надо было, сейчас бы поделился, и ты бы как-нибудь прикрутил ее к своей программе, а я валил лес.
0
1705 / 574 / 74
Регистрация: 10.04.2009
Сообщений: 9,283
28.11.2011, 20:42
есть у меня - дёшево
0
1705 / 574 / 74
Регистрация: 10.04.2009
Сообщений: 9,283
28.11.2011, 21:05
Лучший ответ Сообщение было отмечено как решение

Решение

что преуныли братья славяне?
Вложения
Тип файла: rar СклонениеФИО, модуль, форма.rar (177.8 Кб, 2300 просмотров)
4
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
29.11.2011, 21:15  [ТС]
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
что преуныли братья славяне?
преунили ето с чего?
0
693 / 99 / 10
Регистрация: 25.06.2011
Сообщений: 718
30.11.2011, 22:41  [ТС]
а у виде одного макроса без дополнительних библиотек ето возможно? я нашел один файл но как его усовершенствовать....то есть на несколько падежей,он только на один как я понял
Вложения
Тип файла: xls Книга1.xls (31.0 Кб, 1038 просмотров)
0
8 / 8 / 0
Регистрация: 23.11.2011
Сообщений: 116
07.11.2013, 15:39
Приветствую, уважаемые форумчане! Использую такой модуль для склонения ФИО в падежах.
Именительный падеж: ИВАНОВ Иван Иванович. Проблема в том, что фамилия, имя, отчество выходят так: Ивановым Иваном Ивановичем, а нужно ИВАНОВЫМ Иваном Ивановичем. А лучше, так же как в Именительном, если Иванов, то - Ивановым, а если ИВАНОВ, то - ИВАНОВЫМ. Поправьте, пожалуйста.
ВЕРСИЯ ФУНКЦИИ СКЛОНЕНИЯ - Предложный падеж (Кем ИВАНОВ = ИВАНОВЫМ


Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
Function PreditiveCase(sSurname$, Optional sName$, Optional sPatronymic$) As String
    ' Функция формирует предложный падеж из ФИО
    ' Параметры: sSurname - фамилия, sName - имя, sPatronymic - отчество
    ' © 2013 EducatedFool
   
    ' пол теперь определяется иначе:   что заканчивается на "вна" или "кызы" - то женщины, остальные - мужчины.
    Dim bMaleSex As Boolean:    ' bMaleSex = (Right(sPatronymic, 1) = "ч" Or Right(sPatronymic, 4) = "оглы")
    bMaleSex = Not (Right(sPatronymic, 2) = "на" Or Right(sPatronymic, 4) = "кызы")
 
    If Len(sSurname) > 0 Then    '   Фамилия
        arrSurname = Split(sSurname, "-")
        For i = LBound(arrSurname) To UBound(arrSurname)    ' перебираем все части фамилий, содержащих дефис
            sRes = "": sSurnamePart = arrSurname(i)
 
            If bMaleSex Then    ' мужские фамилии
                Select Case Right(sSurnamePart, 1)
                    Case "о", "и", "ы", "у", "э", "е", "ю": sRes = sSurnamePart
                    Case "й": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "им"
                    Case "ь": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ем"
                    Case "я": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ей"
                    Case "а": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ой"
                        If UBound(arrSurname) > 0 And i = 0 Then sRes = sSurnamePart
                    Case Else: sRes = sSurnamePart & "ым"
                End Select
 
                Select Case Right(sSurnamePart, 2)    ' добавлено, для редких фамилий
                    Case "ец":  sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "цем"
                        If LCase(sSurnamePart) Like "*[уеыаоэяиюё]ец" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "цем"
                        If LCase(sSurnamePart) Like "*[!уеыаоэяиюё][!уеыаоэяиюё]ец" Then sRes = sSurnamePart & "ем"
                    Case "зе", "их", "ых": sRes = sSurnamePart
                    Case "ий", "ой": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "им"
                        If Len(sSurnamePart) <= 4 Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "я"
                        If Right(sSurnamePart, 3) = "чий" Then sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "им"
                    Case "уй": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "уем"
                Case "ич": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "чем"
 
     
           End Select
 
            Else    ' женские фамилии
                Select Case Right(sSurnamePart, 1)
                    Case "о", "е", "э", "и", "ы", "у", "ю", "б", "в", "г", "д", "ж", "з", "к", "л", "м", "н", "п", _
                         "р", "с", "т", "ф", "х", "ц", "ч", "ш", "щ", "ь", "й": sRes = sSurnamePart
                    Case "а": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ой"
                    Case "я": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ей"
                    Case Else: sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 1) & "ой"
                End Select
 
                Select Case Right(sSurnamePart, 2)    ' добавлено, для редких фамилий
                    Case "ха": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "хой"
                    Case "ла": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "лой"
                    Case "ая": sRes = Mid(sSurnamePart, 1, Len(sSurnamePart) - 2) & "ой"
                End Select
 
            End If
 
            ' не склоняются мужские и женские фамилии, оканчивающиеся на -о, -е, -э, -и, -ы, -у, -ю,
            ' а также на -а с предшествующей гласной
            If LCase(sSurnamePart) Like "*[уеыаоэяиюё]а" Then sRes = sSurnamePart
 
            arrSurname(i) = sRes
        Next
        PreditiveCase = Join(arrSurname, "-") & " "    ' соединяем части склоняемой фамилии обратно в одну строку
    End If
 
    If Len(sName) > 0 Then    '   Имя
        NameException$ = GetPreditiveException(sName)
        If Len(NameException$) Then    ' для имен-исключений
            PreditiveCase = PreditiveCase & NameException$
        Else    ' имя не найдено в списке исключений
            If bMaleSex Then
                Select Case Right(sName, 1)
                    Case "й", "ь": PreditiveCase = PreditiveCase & Mid(sName, 1, Len(sName) - 1) & "ем"
                    Case "а": PreditiveCase = PreditiveCase & Mid(sName, 1, Len(sName) - 1) & "ой"
                    Case "я": PreditiveCase = PreditiveCase & Mid(sName, 1, Len(sName) - 1) & "ем"
                    Case "о": PreditiveCase = PreditiveCase & sName
                    Case Else: PreditiveCase = PreditiveCase & sName & "ом"
                End Select
            Else
                Select Case Right(sName, 1)
                    Case "а": PreditiveCase = PreditiveCase & Mid(sName, 1, Len(sName) - 1) & "ой"
                    Case "я": PreditiveCase = PreditiveCase & Mid(sName, 1, Len(sName) - 1) & "ей"
                    Case Else: PreditiveCase = PreditiveCase & sName
                End Select
            End If
        End If
        PreditiveCase = PreditiveCase & " "
    End If
 
    If Len(sPatronymic) > 0 Then    '   Отчество
        If Right(sPatronymic, 4) = "оглы" Or Right(sPatronymic, 4) = "кызы" Then
            PreditiveCase = PreditiveCase & sPatronymic
        Else
            If bMaleSex Then
                PreditiveCase = PreditiveCase & sPatronymic & "ем"
            Else
                PreditiveCase = PreditiveCase & Mid(sPatronymic, 1, Len(sPatronymic) - 1) & "ой"
            End If
        End If
    End If
    PreditiveCase = Replace(PreditiveCase, "-", "- ")
    PreditiveCase = StrConv(PreditiveCase, vbProperCase)
    PreditiveCase = Replace(PreditiveCase, "- ", "-")
End Function
 
Function GetPreditiveException(ByVal txt$) As String    ' склонение имён-исключений
    Select Case txt$
        Case "Павел": GetPreditiveException = "Павлом"
        Case "Лев": GetPreditiveException = "Львом"
        Case "Пётр": GetPreditiveException = "Петра"
        Case "Любовь": GetPreditiveException = "Любовью"
 
            ' без изменения (не склоняются) - перечисляем через запятую
        Case "Али","Гиви","Бали","Бари": GetPreditiveException = txt$
    End Select
End Function
0
1705 / 574 / 74
Регистрация: 10.04.2009
Сообщений: 9,283
07.11.2013, 20:31
то, что Вы спросили нет необходимости было выкладывать портянку с кодом
у Вас банальный вопрос относительно LCASE UCASE при выводе результата
0
1 / 1 / 1
Регистрация: 25.04.2015
Сообщений: 78
27.04.2015, 08:02
Мне нужно делать исковые заявления на товарищей которые получаются в SQL запросе- солидарщики т.е у кого сумма долга одинаковая, раньше я это делал в экселе, но пришел в акцес и только начал разбиратся. Насколько я знаю, отчет формируется для всех строк сразу. А мне этого не нужно. Отправляю шаблон Письма. Может он поможет внести ясность.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2015, 08:02
Помогаю со студенческими работами здесь

Сортировка имен, фамилий и отчеств
var s1:string; s:array of string; a:array of string; i,j,j1,k,n:integer; begin read(n); for k:=1 to (n+1) do begin ...

Склонение имен и фамилий
Помогите с алгоритмом по &quot;склонению&quot; имен и фамилий? Пример: Петя Иванов - Пети Иванову и т.д. Куда копать???

Склонение по падежам
Здравствуйте, помогите советом как можно решить возникшую проблему. Нужно склонять данные в поле имя. Писать код для автоматического...

склонение по падежам в поле
Всех с Новым Годом! 31-го зашел в Учительскую... и был удивлен! 10 преподавателей сидят выдают сертификаты (сказали до 16 часов вечера...

Макет печати. склонение по падежам
подскажите как в макете печати фио было склоняемое?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru