Как заменить слово, сохранив регистр?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Кукша
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 04.10.2005 (Вт) 11:40

Как заменить слово, сохранив регистр?

Сообщение Кукша » 04.10.2005 (Вт) 11:51

Здравствуйте :)
Сделал макрос для Word с вызовом формы. В одно из полей вставляется предложение из документа. В этом предложении надо некоторые слова заменить их синонимами, по выбору пользователя. Всё бы ничего, но заменяемое слово не сохраняет написание с большой буквы(если это слово стоит с начале предложения или является названием).
Использовал функцию Replace

В основном тексте это решил с помощью
With ActiveDocument.Content.Find
.Text = OldSlovo
With .Replacement
.Text = NewSlovo
.ClearFormatting
.Font.Color = wdColorRed
End With
.Execute Replace:=wdReplaceAll, Format:=True
End With

А вот в форме как это сделать?
Или: как заменить слово в строке c сохранением регистра первой буквы?

Заранее спасибо.

seelts
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 143
Зарегистрирован: 21.11.2002 (Чт) 11:24
Откуда: Russia

Сохранить регистр

Сообщение seelts » 04.10.2005 (Вт) 12:43

Это не VBA, но я думаю смысл понятен
Код: Выделить всё
Dim rc as integer
rc = strFirstLetter Like "[!A-Z]"
msgbox rc

Поясняю: в переменную strFirstLetter заносим первую букву слова которое меняем. После выполнения вышеуказанного кода в rc будет или 0 или -1. 0 - False, -1 - True. Если 0 то буква большая английская, если -1, то буква маленькая английская. Затем тоже самое делаем для раусского набора букв ([!А-Я])? после чего делаем определённые замены (с UCase'ом или без)
если создать алгоритм, которым сможет пользоваться даже дурак, то только дурак и будет им пользоваться

Кукша
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 04.10.2005 (Вт) 11:40

Re: Сохранить регистр

Сообщение Кукша » 05.10.2005 (Ср) 8:46

Понял, спасибо. Я в общем подозревал нечто подобное. Просто не хотелось свою подфункцию громоздить.
Ведь, в том отрывке что я выложил, всё решается "само", без доп. функций, но в самом открытом документе. Ерунда в том, что я не знаю, как это применить не для документа, а для отдельно взятой строковой переменной...
А за подсказку спасибо - я уже собрался функцию делать, но про ряды знаков забыл, а ведь так и впрямь короче выходит :)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 37

    TopList