powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Упростить и доработать код по замене слов и их окончаний.
3 сообщений из 3, страница 1 из 1
Упростить и доработать код по замене слов и их окончаний.
    #38406333
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребят, написал кое как код который выполняет простой макрос. Выделяешь нужное слово, запускаешь макрос и он по всему документу его заменяет и подсвечивает, то на что заменяет.

1. Проблема с окончаниями слов. Вот к примеру: Исполнителю, Исполнителя, Исполнитель. Уже три условия получается, три разных слова.
2. Громоздкий код, на одних if и ElseIf держится. думаю его можно сделать более компактным. Но мои небольшие знания VB этого не позволяют самостоятельно сделать.

Код: vbnet
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.
Sub selectWord2()

Dim rTmp As Range

Set rTmp = ActiveDocument.Range
    With rTmp.Find
        .Text = Selection.Text
        If Selection.Text = "Клиент" Then
            .Replacement.Text = "Принципал"
            .Replacement.Highlight = True
            .Execute Replace:=wdReplaceAll
        ElseIf Selection.Text = "Заказчик" Then
            .Replacement.Text = "Принципал"
            .Replacement.Highlight = True
            .Execute Replace:=wdReplaceAll
            Else
                If Selection.Text = "Приложениях" Then
                    .Replacement.Text = "Дополнительных соглашениях"
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll
                ElseIf Selection.Text = "Приложением" Then
                    .Replacement.Text = "Дополнительными соглашениями"
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll
                    Else
                        If Selection.Text = "Исполнитель" Then
                            .Replacement.Text = "Агент"
                            .Replacement.Highlight = True
                            .Execute Replace:=wdReplaceAll
                        ElseIf Selection.Text = "Компания" Then
                            .Replacement.Text = "Агент"
                            .Replacement.Highlight = True
                            .Execute Replace:=wdReplaceAll
                            Else
                                If Selection.Text = "Договор" Then
                                    .Replacement.Text = "Приложение"
                                    .Replacement.Highlight = True
                                    .Execute Replace:=wdReplaceAll
                                End If
                        End If
                End If
                
        End If
    End With

End Sub
...
Рейтинг: 0 / 0
Упростить и доработать код по замене слов и их окончаний.
    #38406555
kuklp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lopuxi,

делайте на select case
и не надо вот это пихать в каждый блок:
Код: vbnet
1.
2.
                    .Replacement.Highlight = True
                    .Execute Replace:=wdReplaceAll

Вынесите его за условия. Вот и будет Вам сокращение.
...
Рейтинг: 0 / 0
Упростить и доработать код по замене слов и их окончаний.
    #38407676
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kuklp, спасибо помогло)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Упростить и доработать код по замене слов и их окончаний.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]